我tags
在集合中几乎每个文档中都有一个数组字段。有一些没有该字段的文档。
如果我运行,db.posts.find({ "some_tag": { $in: tags } });
我希望MongoDB仅返回在其tag
字段中确实包含“ some_tag”的帖子,并排除那些甚至没有该字段的帖子,但是我实际上遇到了此错误:JavaScript execution failed: ReferenceError: miembros is not defined
这是为什么?如果某些文档没有该字段,我可以用这种方式查询我的收藏吗?
编辑:问题已解决。请参阅第一个评论。
我希望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
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句