「メッセージ」というコレクションがあります。各メッセージには「読み取り」ブール値があります。メッセージを取得するときに、変更前の値を返しながら、値を「true」に設定したい場合があります。
では、'read' 値が 'false' である 1 つのメッセージがあるとします。取得するときは初期の「false」値を返したいのですが、同じ操作で「true」に設定したいと思います。
それを行う方法はありますか?
「メッセージ」というコレクションがあります。各メッセージには「読み取り」ブール値があります。メッセージを取得するときに、変更前の値を返しながら、値を「true」に設定したい場合があります。
では、'read' 値が 'false' である 1 つのメッセージがあるとします。取得するときは初期の「false」値を返したいのですが、同じ操作で「true」に設定したいと思います。
それを行う方法はありますか?
findAndModify
コマンドはあなたが探しているものです:
4 . このコマンドは、この更新用に選択された元の変更されていないドキュメントを返します。
Mongo シェルで使用していた場合、使用方法は次のようになります。
db.messages.findAndModify({query: {read: false}, update: {read: true}})
ただし、Javaを使用しているようです。Java ドライバーは、findAndModify()
. DBCollectionの javadoc で確認できます。