tob*_*yer 5 clojure mongodb monger
在Monger中,有一个insert-and-return用于返回新插入文档的函数.
没有update-and-return功能.
如何从执行更新的函数返回更新的文档?
我想我可以使用,save-and-return但在我看来,我不能使用像$push这个功能的运算符.
我可以为你看到两个选择。
第一个选择是使用JohnnyHK 的解决方案和find-and-modify函数:
(mc/find-and-modify "users"
(select-keys my-doc [:_id])
{ $push { :awards { :award "IBM Fellow"
:year 1963
:by "IBM" }}}
:return-new true)
Run Code Online (Sandbox Code Playgroud)
第二个选项是使用save而不是update. 如果您已经从 mongodb 加载了整个文档,那么这是一个不错的选择。您可以轻松替换 mongodb 运算符,例如$push使用update-inclojure等函数。对我来说,使用 clojure 映射进行操作似乎是更好的方法。如果您在寻找 mongodb 运算符的 clojure 替代品时遇到问题,我可以帮助您。
对于我之前的例子,它看起来像这样:
(mc/save-and-return "users"
(update-in my-doc [:awards] conj
{ :award "IBM Fellow"
:year 1963
:by "IBM" }))
Run Code Online (Sandbox Code Playgroud)
我自己更喜欢这种方式,因为它看起来更像 Clojure 风格。
| 归档时间: |
|
| 查看次数: |
850 次 |
| 最近记录: |