2016-08-30 3 views
0

存在しない場合、私はモンゴここプッシュ要素、それは

と多くの機能アップデートを持っている例を示します。

db.auto.update({'def.name':'AFFAIRES'},{$push:{ 
"covers":{$each: [{"a":'G06'},{"a":'G07'},{"a":'G03'},{"a":'G04'},{"a":'G07'},{"a":'G30'},{"a":'G34'}, 
{"cover":'G14'}]}}},{multi:true}) 

しかし、問題は、私のコレクションは、これらの変数の1つを含むことができ"a"なので、プッシュする必要はありません。そうでなければ、コレクションにプッシュする必要があります。 私の質問は、プッシュ前にmongoDBに確認する方法です、それは可能ですか? 私のクエリには、プッシュする他の変数も含まれている場合があります。

+0

[upsert](https://docs.mongodb.com/manual/reference/method/db.collection.update/#upsert-option)オプションを試しましたか? –

+0

いいえ、私がupsertについて知っていることは:それは 'update'というクエリが見つからなかった場合、要素をプッシュします。 – chou

答えて

0

使用$addToSet - $ addToSet演算子は、値が既に存在していない限り、配列に値を追加します。値が既に存在する場合、$ addToSetはその配列に対して何もしません。 $ addToSetは、重複した項目がセットに追加されていないことを保証し、既存の重複エレメントには影響しません。 $ addToSetは、変更されたセット内の要素の特定の順序付けを保証しません。

関連する問題