1

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

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

这是为什么?如果某些文档没有该字段,我可以通过这种方式查询我的集合吗?

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

4

1 回答 1

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.

于 2013-10-16T08:55:56.573 回答