1

mongoDB コレクションのレコードを一定の制限まで更新したいと考えています。PHP/mongoDBでそれを行う方法はありますか?

'multi'私は旗についてよく知っています。multiが設定されている場合true、一致するすべてのレコードが更新されます。それ以外の場合は、1 つのレコードのみが更新されます。

しかし、私が必要としているのは、コレクション内のレコードを SQL のように固定された制限に更新したいということです。

元。UPDATE table SET x=10 wher x=1 LIMIT 10

mongoDBで可能かどうか疑問に思っていますか?

私の質問が明確であることを願っています。どんな助けでも大歓迎です。

4

2 に答える 2

2

現在、アプリケーションから MongoDB への更新クエリを制限することはできず、検索クエリのみを制限することはできません。

現在これを行う最善の方法は、PHP アプリケーション内のクライアント側でこれらの 10 個 (またはその他のもの) を引き出し、そこでそれらを更新することです。

$cursor = $db->col->find(array('x' => 1))->limit(10)
foreach($cursor as $row){
    $row['x'] = 10;
    $db->col->save($row); // Update with set can be used too
}

@ nw90が言ったように、それが小さい数であれば、ObjectId代わりに s を取得してから、atomic を使用して1つのクエリですべてを実行することもできます$set

これに注意してください: https://jira.mongodb.org/browse/SERVER-1599

于 2013-01-19T18:10:47.920 に答える
0

私の知る限りそのような機能はありません。回避策を実行できます: 更新するドキュメントの _id を取得し、それらの _id ですべてのドキュメントを更新するだけです

于 2013-01-19T17:55:38.500 に答える