mongodb subset方式的查询

例如以下一个collention:

  1. { test: [1,2,3] }
  2. { test: [1,3] }
  3. { test: [2] }
  4. { test: [3,4] }

    如何实现查找test数组是另一个数组 [1,2,3]子集的结果?

    类似于$all查询,但与$all相反。

    db.coll.find({ test: {$subset: [1,2,3] }})得到的结果应该是除了4以外的其它几个。

回答:


db.test.insert({test:[1,2,3]});

db.test.insert({test:[1,2]});

db.test.insert({test:[1]});

db.test.insert({test:[1,2,4]});

db.test.insert({test:[1,2,3,4]});

db.test.insert({test:[4]});

//这一句返回有元素不在集合[1,2,3]里的doc

db.test.find({test:{$elemMatch:{$nin:[1,2,3]}}})

//这一句和上面的相反,返回所有元素都在集合[1,2,3]里的doc

db.test.find({test:{$not:{$elemMatch:{$nin:[1,2,3]}}}})

请输入图片描述

以上是 mongodb subset方式的查询 的全部内容, 来源链接: utcz.com/p/197038.html

回到顶部