Mongo值在数组查询中的问题:$ not运算符不起作用,并且无法选择ObjectIds

Ane*_*apu 6 mongodb

我试图选择一个文档的数组中不包含值的文档.

我有两个问题,我将分别提出:

(1)我无法使用$ not运算符来处理数组值查询:例如,如果我的集合中包含以下文档:

{ _id: ObjectId("000000000000000000000000"), mylist: [ "red", "green", "blue" ] }

我可以使用以下选择此文档:

db.myCol.find({mylist:"red"})

但是,我想通过测试没有橙色来选择这个文件:

db.myCol.find({$not:{mylist:"orange"}})

为什么这不起作用?

(2)如果数组值是ObjectIds,我无法获取数组查询中的值:

{ _id: Object("000000000000000000000000"), mylist: [ ObjectId("111111111111111111111111") ] }

以下内容不会检索此文档:

myCol.find({mylist:ObjectId("111111111111111111111111")})

有人可以建议我可能做错了吗?

mu *_*ort 6

没有$not像你这样$ne的简单案例,你想要的是:

db.myCol.find({ mylist: { $ne: 'orange' } })
Run Code Online (Sandbox Code Playgroud)

你的第二个应该(并且确实)对我有用,也许你使用了错误的数量.