4

更新で使用される値が配列に存在しない場合、1 つの操作 (または 1 つのコマンドのみ) で mongodb 内のドキュメントを更新できるかどうか疑問に思っています。

mongodb ドキュメントの例:

{ 
    regs : {
        someid : 12345,
        dataArray : [ { id  : 1 }, { id : 43 }, { id : 11 }]
    }
}

dataArray 内の id がまだ使用されていない場合にのみ、次のように更新したいと思います。

 db.regs.update({ someid : 12345 }, { $push : { dataArray : { id : INT }}})

上記の行を使用する{ id : INT }と、既に配列にあるかどうかを確認し、そうでない場合にのみ更新できますか?

4

2 に答える 2

3

@ zero323 が既に指摘しているように、その特定のユース ケースを念頭に置いた特定の更新操作があります。MongoDBのドキュメントから:

$addToSet

演算子は$addToSet、値がまだ配列にない場合にのみ、値を配列に追加します。値が配列にある場合は、配列$addToSet を変更せずに返します。

次の例を検討してください。

db.collection.update( { field: value }, { $addToSet: { field: value1 } } ); 

ここで、がこの配列のメンバーでない場合にのみ、 に格納されている配列に$addToSet追加します。value1fieldvalue1

于 2013-09-22T00:14:09.840 に答える