我的要求是计算特定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.id
是ObjectId
存储在集合coll1
中,同样会与集合coll2
一起存储。在提取id
时应该特别小心,比如说ObjectId(id)
?
更新 - 我使用的是mongo db 版本3.0.9
答案 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