我的要求是对所有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
存储在collection中的对象coll1
,它将与collection一起使用coll2
。在获取id
类似之言时,应格外小心ObjectId(id)
吗?
更新-我正在使用mongo db版本3.0.9
我不得不$nin
检查not in
条件并以与mongodb
was版本不同的格式获取数组3.0.9
。以下是我的操作方法。
db.coll1.find({"arr.id":{$nin:[db.coll2.find({},["id"])]}}).count()
因为mongodb v>=3.2
它将如下
db.coll1.find({"arr.id":{$nin:[db.coll2.find({},"id")]}}).count()
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句