MongoDB $ lookup默认文档(如果不匹配)

时间:2019-05-23 15:44:28

标签: mongodb aggregation-framework

如果$ 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']}}
    }
})

0 个答案:

没有答案