在我的收藏posts
我有这样的文件
[{
_id : ObjectId("post-object-id"),
title : 'Post #1',
category_id : ObjectId("category-object-id")
}]
我需要根据他们的category_id(可以是多个ID)对我的一系列帖子进行一些查询,但不包括其中一些帖子。
我尝试过查询(在shell中):
db.posts.find({$and: [
{_id: { $nin : ['ObjectId("post-object-id")']}},
{category_id : { $in : ['ObjectId("category-object-id")']}}
]})
如果count(),我返回0。
但是,如果我更改了category_id属性并删除了$ in,只需包含一个 ID,就像这样:
db.posts.find({$and: [
{_id: { $nin : ['ObjectId("58a1af81613119002d42ef06")']}},
{category_id : ObjectId("58761634bfb31efd5ce6e88d")}
]})
但是这个解决方案只能让我找到一个类别。
我如何以与上述相同的方式将$ in和$ nin与objectId结合起来?
答案 0 :(得分:2)
这将有效,只需删除ObjectId
周围的单引号db.posts.find({$and: [
{_id: { $nin : [ObjectId("post-object-id")]}},
{category_id : { $in : [ObjectId("category-object-id")]}}
]})
你不应该在ObjectId周围放置单引号,而是将它们作为字符串