我有一个名为“messages”的集合。每条消息都有一个'read'布尔值。在某些情况下,当我检索消息时,我想将值设置为“true”,同时返回预修改的值。
所以,假设我有一条消息,其“读取”值为“false”。当我检索它时,我想返回初始的'false'值,但是在同样的操作中我想将它设置为'true'。
任何方式这样做?
答案 0 :(得分:3)
您正在寻找findAndModify
command:
4。该命令返回为此更新选择的原始未修改文档。
如果您在Mongo shell中使用它,您的用法将如下所示:
db.messages.findAndModify({query: {read: false}, update: {read: true}})
看起来你正在使用Java。 Java驱动程序为findAndModify()
提供了一些不同的签名。您可以在javadoc for DBCollection。