如果$ lookup没有返回任何结果,如何从level_collection中选择指定的文档(user_id:“其他”)?
两个集合“ users_collection”和“ level_collection”:
data
这是不起作用的聚合管道:
users_collection = [{
_id: 1
user_id: 2,
user_name: 'john'
}, {
_id: 2
user_id: 4,
user_name: 'mike'
}, {
_id: 3
user_id: '8',
user_name: 'tommy'
}, {
_id: 4
user_id: '16',
user_name: 'davidmith'
}]
level_collection = [{
_id:1
user_id: 2,
level: 'A'
}, {
_id: 2
user_id: 4,
level: 'B'
}, {
_id: 3
user_id: 'other',
level: 'C'
}]
在这里,我需要使用来自'level_collection'的{user_id:'other'}来设置文档中的数据。结果应该是这样的:
users_collection.aggregate({
'$lookup': {
'from': 'level_collection',
'localField': 'user_id',
'foreignField': 'user_id',
'as': 'level'
}
}, {
'$unwind': {
'path': '$level'
}
}, {
'$addFields': {
'level': {'$ifNull': ['$level.level', 'other']}}
}
})