mongodb中字段别名需要使用aggregate操作来实现

假设有个场景:

需要根据mongodb数据库中的商品表goods中的上线时间onlineTime与下线时间offlineTime,判断状态statusONLINE/OFFLINE

此时需要用聚合aggregate函数来创建别名status,然后符合当前时间大于等于上架时间和当前时间小于等于下架时间则为上架状态,否则为下架状态,最后依据status排序

执行语句如下:

db.getCollection('topic').aggregate([
    {$match: {}},
    {$project:{
        _id: 1, 
        title: 1, 
        onlineTime: 1, 
        offlineTime: 1,
        status: {
            $cond: [
                {$and: [{$lte: ["$onlineTime", new Date()]},{$gte: ["$offlineTime", new Date()]}]},
                "ONLINE", 
                "OFFLINE"
                ]
        }
    }},
    {$sort:{"status": -1}}
    ])

参数解释

$match:匹配

$project:参数

$cond:三元运算符,类似if else

$and:与运算

$lte:小于等于

$gte:大于等于

new Date():mongodb中获取当前时间函数

$sort:排序

happy coding!