-1

私はこの例を取りました:

db.inventory.update( { tags: { $nin: [ "appliances", "school" ] } }, { $set: { sale: false } } )

mongodb.org Web サイトを形成します。

$nin を複数回使用しようとすると、常に find_and_modify が失敗します。私が達成したいこと:

db.inventory.update( { tags: { $nin: [ "appliances", "school" ]}, owners: {$nin : ["a","b"] }, { $set: { sale: false } } )

しかし、 $nin を複数回使用することは許可されていないようです。$push をそのように使用できないことはわかっているので、複数のフィールドで一度だけ $push を使用します。しかし、それを $nin に使用するにはどうすればよいでしょうか?

4

1 に答える 1

1

$nin は複数回使用できます。次に例を示します。

db.a.insert({odd : [1, 3, 5, 7, 9], even : [0, 2, 4, 6, 8]})
 db.a.find({
   odd : {$nin : [2, 6]},
   even : {$nin : [3, 7, 9]}
 }); // will return a document

 db.a.find({
   odd : {$nin : [2, 6, 1]},
   even : {$nin : [3, 7, 9]}
 }); // will NOT return a document because first odd has 1

 db.a.find({
   odd : {$nin : [2, 6, 1]},
   even : {$nin : [3, 7, 9]}
 }); // will NOT return a document because second even has 2

それを正しく見つけることができれば、それを変更することもできます

db.a.update(
  {odd : {$nin : [2, 6]}, even : {$nin : [3, 7, 9]}},
  {$set : {'correct' : 1}}
)
db.a.find().pretty()

これは、ただ 1 つの問題を示唆しています。何か間違ったことをしたということです。

于 2013-11-25T22:08:26.917 に答える