gpt4 book ai didi

mongodb - Mongoose aggregate Lookup - 如何按特定 id 过滤

转载 作者:可可西里 更新时间:2023-11-01 10:37:33 25 4
gpt4 key购买 nike

我正在尝试制作一个聚合管道 - $lookup 以从另一个接收仅收集不等于特定 _id 的项目

例如:

诊所集合:

{_id:1,name:'some name1'}
{_id:2,name:'some name2'}
{_id:3,name:'some name3'}

业务集合:

{_id:1,name:"some business name",clinics:[1,2,3]}

我的聚合管道查询:

db.business.aggregate([
{$match: {_id: mongoose.Types.ObjectId(businessId)}},
{$lookup:
{from: "ClinicsCollection", localField: "clinics", foreignField: "_id", as: "clinics"}},

]

我想过滤所有不等于特定 id 号的诊所,比如 _id : 1

预期结果:

 clinics :[
{_id:2,name:'some name2'}
{_id:3,name:'some name3'}
]

我怎样才能做到这一点?

谢谢

最佳答案

您可以使用下面的aggregation使用 mongodb 3.6 及以上

您需要像在第一阶段对父集合那样对子集合使用 $match

db.BusinessCollection.aggregate([
{ "$match": { "clinics": { "$type": "array" }}},
{ "$lookup": {
"from": "ClinicsCollection",
"let": { "clinics": "$clinics" },
"pipeline": [
{ "$match": {
"$expr": {
"$and": [
{ "$in": ["$_id", "$$clinics"] },
{ "$not": { "$eq": ["$_id", 1] }}
]
}
}}
],
"as": "clinics"
}}
])

关于mongodb - Mongoose aggregate Lookup - 如何按特定 id 过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54215731/

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