问题描述
例如以下一个collention:
{ test: [1,2,3] }{ test: [1,3] }{ test: [2] }{ test: [3,4] }如何实现查找test数组是另一个数组 [1,2,3]子集的结果?类似于$all查询,但与$all相反。db.coll.find({ test: {$subset: [1,2,3] }})得到的结果应该是除了4以外的其它几个。问题解答
回答1: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]里的docdb.test.find({test:{$elemMatch:{$nin:[1,2,3]}}})//这一句和上面的相反,返回所有元素都在集合[1,2,3]里的docdb.test.find({test:{$not:{$elemMatch:{$nin:[1,2,3]}}}})


