MongoDB:如何通过字段不存在来查找文档?

203

有没有一种方式可以指定“文档不包含字段”的条件呢?

例如,我想只找到这两个文档中的第一个文档,因为它没有“price”字段。

{"fruit":"apple", "color":"red"}


{"fruit":"banana", "color":"yellow", "price":"2.00"}

1
可能是重复的问题:Mongo:查找没有某个字段的项 - Ram Patra
3
您可以尝试使用 db.mycollection.find({ "price" : null })。该语句的意思是查询 mycollection 集合中所有价格为空的文档。 - evilReiko
1个回答

378
尝试使用$exists运算符:
db.mycollection.find({ "price" : { "$exists" : false } })

并查看它的文档


13
然而,请记住这样的查询不能使用索引,在大型集合上可能会非常慢。 - mnemosyn
11
非常好的观点,谢谢。我知道这个警告在MongoDB版本1.8.x及之前适用;但是我认为在2.0版本中,带有$exists字段约束的查询现在可以利用索引了...? - dampier

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接