我是新来的MongoDB,我试图找到托收A
,其中外地_id
等于野外excel_template
的采集B
。
var r = db.B.find({"name":/.*aco.*/}, {excel_template:1, _id:0}).excel_template;
db.A.find({"_id":{$eq: "${r}" }})
但是我很难。它不会给我任何结果,而应该给我一个结果。任何建议将不胜感激
db.B.find({ "name": /.*aco.*/ }, { "excel_template": 1, "_id": 0 })
不会返回单个文档,而是返回cursor
与上述查询条件匹配的文档。
您可以使用distinct()
方法excel_template
从与上述查询匹配的文档中返回值的数组,然后在其他查询中使用该方法,如下所示:
var r = db.B.distinct("excel_template", { "name": /.*aco.*/ });
db.A.find({ "_id": { "$in": r } });
要么
MongoDB 3.2及更高版本:
您还可以使用聚合框架,在该框架中,$lookup
管道将提供一种功能来连接两个集合并在单个操作中运行查询
db.B.aggregate([
{ "$match": { "name": /.*aco.*/ } },
{
"$lookup": {
"from": "A",
"localField": "excel_template",
"foreignField": "_id",
"as": "bList"
}
}
])
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句