gpt4 book ai didi

mongodb - 如何在 MongoDb 中查找和匹配

转载 作者:行者123 更新时间:2023-12-02 11:36:12 25 4
gpt4 key购买 nike

我有 2 个集合,例如:

集合A:{_id: "id1",... Prop 。}

集合B:{_id:“id2”,集合A_id: "id1",属性_x:3,... Prop 。}

当我加入查找时,我如何还可以按 collectionB.property_x 进行过滤?

所以我想:

{
"$lookup": {
"from" => "",
'localField' => '_id',
'foreignField' => 'job_id',
'as' => 'collB'
},
"$match": {
"collB.property_x": 3
}
}

这怎么可能?

谢谢!

最佳答案

这是可能的。想象一下您有两个这样的集合:

db.collectionA.insert({_id: 1, field: "hey"});
db.collectionA.insert({_id: 2, field: "hey2"});
db.collectionA.insert({_id: 3, field: "hey3"});

db.collectionB.insert({_id:1, fk: 1, cnt: 4});
db.collectionB.insert({_id:2, fk: 2, cnt: 0});

假设 fk 字段代表某种“外键”关系。我们希望使用 $lookup 将 collectionB 中的文档嵌入到 collectionA 中。查找非常灵活,因此它将依赖文档嵌入为数组,因为可以存在一对多关系。我们要做的就是 $unwind 这个嵌套数组,使每个文档中只有一个来自 collectionB 的嵌入项目,然后我们可以对这些条目执行 $match 。所以我的整个查询如下所示:

db.collectionA.aggregate([
{
$lookup:
{
from: "collectionB",
localField: "_id",
foreignField: "fk",
as: "relation"
}
},
{
$unwind: "$relation"
},
{
$match: {"relation.cnt": 0}
}
]);

关于mongodb - 如何在 MongoDb 中查找和匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46962380/

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