多相关集合属性的Mongoose过滤器
我有两种收集类型, 集合a有一个属性,该属性包含包含集合b中对象的数组多相关集合属性的Mongoose过滤器,mongoose,Mongoose,我有两种收集类型, 集合a有一个属性,该属性包含包含集合b中对象的数组 收藏 收集 我需要查询集合a中的所有对象,以确保至少有一个已连接集合b项属性isOpen设置为true 以下是我尝试过但不起作用的过滤器: {'collection_b.isOpen' : true} $lookup在let中使用管道传递收集 $match检查条件collection\u b条件和isOpen条件 $group按null并仅返回id,(其选项)此阶段的目的是返回查找的有限结果以避免内存超出限制,如果您确定
isOpen
设置为true
以下是我尝试过但不起作用的过滤器:
{'collection_b.isOpen' : true}
在let中使用管道传递$lookup
收集
检查条件$match
条件和collection\u b
条件isOpen
按null并仅返回$group
,(其选项)此阶段的目的是返回查找的有限结果以避免内存超出限制,如果您确定存在有限的可计数文档,则可以跳过此阶段id
检查查找返回结果是否为空$match
删除$project
字段不再需要收集结果
{
id:b1,
isOpen:true
}
{
id:b2,
isOpen:false
}
{
id:b3,
isOpen:false
}
{'collection_b.isOpen' : true}
db.collection_a.aggregate([
{
$lookup: {
from: "collection_b",
let: { collection_b: "$collection_b" },
pipeline: [
{
$match: {
$and: [
{ $expr: { $in: ["$id", "$$collection_b"] } },
{ isOpen: true }
]
}
},
{
$group: {
_id: null,
id: { $first: "$id" }
}
}
],
as: "collection_b_result"
}
},
{ $match: { collection_b_result: { $ne: [] } } },
{ $project: { collection_b_result: 0 } }
])