查询MongoDB中的不存在的字段

时间:2013-10-16 08:37:11

标签: javascript mongodb nosql

我在集合中的几乎每个文档中都有一个名为tags的数组字段。有一些文档没有该字段。

如果我运行db.posts.find({ "some_tag": { $in: tags } });,我希望MongoDB只返回tag字段中包含“some_tag”的帖子,并排除那些甚至没有该字段的帖子,但我实际上收到了这个错误:JavaScript execution failed: ReferenceError: miembros is not defined

为什么?如果某些文档没有该字段,我可以这样查询我的收藏吗?

编辑:问题已解决。见第一条评论。

1 个答案:

答案 0 :(得分:1)

  

我希望MongoDB只返回标签中有“some_tag”的帖子

如果您正确查询它,那就是它的作用:

> db.tags.insert({"name" : "john", "tags" : ["tag", "boo"]});
> db.tags.insert({"name" : "mike" });
> db.tags.find({"tags" : "boo" });
{ "_id" : ObjectId("525e53a5e90cc5362ea98842"), 
  "name" : "john", "tags" : [  "tag",  "boo" ] }

> db.tags.find({"tags" : {$in : [ "boo"] } });
{ "_id" : ObjectId("525e53a5e90cc5362ea98842"), 
  "name" : "john", "tags" : [  "tag",  "boo" ] }

问题在于您推翻了$in:您正在寻找“tag字段中包含'some_tag'的帖子”,但查询{ "some_tag": { $in: tags } }查找文档具有字段 some_tagtags中给出的值之一。