|
based on v7 findして、modify (またはremove)
MongoDB 1.3以上で、"findしてmodifyして、returnする" というコマンドをサポートしています。 このコマンドは、オブジェクトに対してアトミックな変更をし結果を取得する場合に便利です。また、このコマンドはsortオプションを持っていて、キューのようなデータを持つ場合に便利です。このコマンドは以下の形をとります。 db.runCommand( { findandmodify : <collection>,
<options> } )
mongoシェルには、findAndModify()というヘルパーメソッドがあります。いくつかのドライバにもヘルパーがあります。 下記の例は、まだ"取得"されていない優先度が最大のジョブを取得すると同時に、アトミックに"取得した"というマークをつけるものです。 job = db.jobs.findAndModify({
query: {inprogress:false},
sort:{priority:-1},
update: {$set: {inprogress: true}}
});
また、返されたオブジェクトを単純に削除することもできます。 job = db.jobs.findAndModify({sort:{priority:-1}, remove:true}}});
tests に他の例がありますので参照してください。 upadteかremoveの引数は必須です。その他の引数はオプションです。
ドライバがヘルパーファンクションを持っていない場合、次のコマンドを直接実行してください。 job = db.runCommand({ findandmodify : "jobs",
sort : { priority : -1 },
remove : true
}).value;
See Also |

IF YOU HAVE A QUESTION, POST IT TO THE USER GROUP.
These pages are fine for comments, but for questions, your best bet will always be the MongoDB User Group. blog comments powered by Disqus