首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Monger返回更新的文档

使用Monger返回更新的文档
EN

Stack Overflow用户
提问于 2013-01-04 15:41:59
回答 2查看 932关注 0票数 5

在Monger中,有一个insert-and-return函数用于返回新插入的文档。

没有update-and-return函数。

如何从执行更新的函数返回更新后的文档?

我想我可以使用save-and-return,但在我看来,我不能在这个函数中使用像$push这样的运算符。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-15 20:08:01

我可以为你提供两个选择。

第一个选项是使用带有find-and-modify函数的JohnnyHK's solution

代码语言:javascript
复制
(mc/find-and-modify "users"
  (select-keys my-doc [:_id])
  { $push { :awards { :award "IBM Fellow"
                      :year  1963
                      :by    "IBM" }}}
  :return-new true)

第二种选择是使用save而不是update。如果您已经从mongodb加载了整个文档,那么这是一个很好的选择。你可以很容易地用像update-in这样的clojure函数替换像$push这样的mongodb操作符。在我看来,使用clojure map进行操作是更好的方法。如果您在寻找mongodb操作符的clojure替代方案时遇到问题,我可以帮助您。

对于我前面的示例,它将如下所示:

代码语言:javascript
复制
(mc/save-and-return "users"
  (update-in my-doc [:awards] conj
    { :award "IBM Fellow"
      :year  1963
      :by    "IBM" }))

我自己,我更喜欢这种方式,因为它看起来更像Clojure。

票数 2
EN

Stack Overflow用户

发布于 2013-01-16 08:12:43

这就是Monger的find-and-modify函数的目的。

代码语言:javascript
复制
;; Atomically find the doc with a language of "Python", set it to "Clojure", and
;; return the updated doc.
(mgcol/find-and-modify collection 
  {:language "Python"} 
  {:$set {:language "Clojure"} }
  :return-new true)
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14153119

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档