gpt4 book ai didi

mongodb - 使用另一个查询的结果在 MongoDB 中查找文档

转载 作者:可可西里 更新时间:2023-11-01 09:21:21 27 4
gpt4 key购买 nike

我是 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}" }})

但我很难做到。它没有给我任何结果,但它应该给我一个结果。任何建议将不胜感激

最佳答案

find 返回 cursor到匹配的文件。所以查询

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"
}
}
])

关于mongodb - 使用另一个查询的结果在 MongoDB 中查找文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42088658/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com