不在查询中,从第二个集合中选择一个字段

时间:2016-06-17 03:47:52

标签: node.js mongodb mongoose

我的要求是计算特定id不在参考集合中的所有数据。等效的SQL查询将如下所示:

select count(*) from tbl1 where tbl.arr.id not in (select id from tbl2)

我尝试过如下操作,但是从第二次查询中获取单个字段即id时却停滞不前。

db.coll1.find(
        {$not:
            {"arr.id":
                 {$in:
                       {db.coll2.find()}//how would I fetch a single column from 
                                       //2nd coll2
                 }
            }
        }
).count()

此外,请注意,arr.idObjectId存储在集合coll1中,同样会与集合coll2一起存储。在提取id时应该特别小心,比如说ObjectId(id)

更新 - 我使用的是mongo db 版本3.0.9

1 个答案:

答案 0 :(得分:0)

我必须使用 $nin 检查not in条件,并以mongodb的{​​{1}}版本获取不同格式的数组}。以下是我的表现。

3.0.9

对于db.coll1.find({"arr.id":{$nin:[db.coll2.find({},["id"])]}}).count() ,它将如下所示

mongodb v>=3.2