我有一个名为“消息”的集合。每条消息都有一个“读取”布尔值。在某些情况下,当我检索消息时,我想将值设置为“true”,同时返回预先修改的值。
所以,假设我有 1 条消息,其“读取”值为“假”。当我检索它时,我想返回初始的“假”值,但在同一个操作中,我想将它设置为“真”。
有什么办法吗?
我有一个名为“消息”的集合。每条消息都有一个“读取”布尔值。在某些情况下,当我检索消息时,我想将值设置为“true”,同时返回预先修改的值。
所以,假设我有 1 条消息,其“读取”值为“假”。当我检索它时,我想返回初始的“假”值,但在同一个操作中,我想将它设置为“真”。
有什么办法吗?
该findAndModify
命令是您要查找的内容:
4. 该命令返回为此更新选择的原始未修改文档。
如果您在 Mongo shell 中使用它,您的用法将如下所示:
db.messages.findAndModify({query: {read: false}, update: {read: true}})
不过,看起来您正在使用 Java。Java 驱动程序为findAndModify()
. 您可以在DBCollection 的 javadoc 中查看它们。