[英]Using conditional lookup 'from' in mongodb / mongoose
是否可以在 mongodb 或 mongoose 中使用條件查找源('from'),如下所示
Collection.aggregate([
{
'$match': {
'receivers.user': new ObjectId('..........')
}
}, {
'$lookup': {
'from': $switch: {
type: [
{ case: 101, then: collection1 },
{ case: 102, then: collection2 },
]
},
'localField': 'data.on_behalf',
'foreignField': '_id',
'as': 'data.on_behalf'
}
}, {
'$unwind': {
'path': '$data.on_behalf',
'preserveNullAndEmptyArrays': true
}
}
])
我想根據類型值切換我的查找集合..
如果您只有 2 種情況,則可以使用條件運算符指定要從中查找的集合:
Collection.aggregate([
...,
{
'$lookup': {
'from': type == 101 ? 'collection1' : 'collection2',
'localField': 'data.on_behalf',
'foreignField': '_id',
'as': 'data.on_behalf'
}
},...
或者,如果您有更多案例,您可以在外部創建一個 switch 語句來指定集合,然后將其傳遞給聚合。 例子:
let collection_to_lookup;
switch(type) {
case 101: collection_to_lookup = "collection1"; break;
case 102: collection_to_lookup = "collection2"; break;
...
default: collection_to_lookup = "collection1"; break;
}
Collection.aggregate([
...,
{
'$lookup': {
'from': collection_to_lookup,
'localField': 'data.on_behalf',
'foreignField': '_id',
'as': 'data.on_behalf'
}
},...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.