我在集合中的几乎每个文档中都有一个名为tags
的数组字段。有一些文档没有该字段。
如果我运行db.posts.find({ "some_tag": { $in: tags } });
,我希望MongoDB只返回tag
字段中包含“some_tag”的帖子,并排除那些甚至没有该字段的帖子,但我实际上收到了这个错误:JavaScript execution failed: ReferenceError: miembros is not defined
为什么?如果某些文档没有该字段,我可以这样查询我的收藏吗?
编辑:问题已解决。见第一条评论。
答案 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_tag
且tags
中给出的值之一。