0

在我的收藏posts我有这样的

[{ 
    _id : ObjectId("post-object-id"), 
    title : 'Post #1', 
    category_id : ObjectId("category-object-id") 

}] 

我需要做一些疑问,我是基于自己的CATEGORY_ID一系列职位(可以是多个ID文件)但排除其中一些。

我试着查询(壳):

db.posts.find({$and: [ 
    {_id: { $nin : ['ObjectId("post-object-id")']}}, 
    {category_id : { $in : ['ObjectId("category-object-id")']}} 
]}) 

我返回0,如果计数()。

但是,如果我改变CATEGORY_ID属性和删除$的,只是包括一个 ID它的工作,像这样:

db.posts.find({$and: [ 
    {_id: { $nin : ['ObjectId("58a1af81613119002d42ef06")']}}, 
    {category_id : ObjectId("58761634bfb31efd5ce6e88d")} 
]}) 

但这种方法只能使我由一个类别找到。

我怎样才能得到关于以上述相同的方式将$ in和$ nin与objectId结合起来?

回答

2

这将工作,只是去掉周围的ObjectId

db.posts.find({$and: [ 
    {_id: { $nin : [ObjectId("post-object-id")]}}, 
    {category_id : { $in : [ObjectId("category-object-id")]}} 
]}) 

单引号你不应该把周围的ObjectId单引号,这使他们弦乐器

+0

感谢一大堆。我可以发誓,我已经试过了,没有引用ObjectId,没有运气,但显然我没有做到正确。现在它的工作:-) – Mestika

+2

如果它适合你,请选择它作为正确答案:) –