存在空字段的Mongoose模型选择查询

时间:2017-03-10 13:55:57

标签: node.js mongodb mongoose

当我写:

User.find({}).select('email firstName lastName').exec(...)

我希望生成的user具有以下结构:

{
  email: 'user@email.com',
  firstName: null,
  lastName: null
}

即使没有为此记录设置firstNamelastName。相反,我得到:

{
  email: 'user@email.com'
}

有没有办法达到我想要的目的?

1 个答案:

答案 0 :(得分:1)

正如评论中所提到的,您可以借助聚合和$ifNull运算符来实现该结果。在猫鼬中它看起来像:

User.aggregate(
    [
        {$project: {
            _id:0,
            email: {$ifNull: ["$email", null]},
            firstName: {$ifNull: ["$firstName", null]},
            lastName: {$ifNull: ["$lastName", null]}
        }}
    ],
    function(err,result) {
        // Result is an array of documents
    }
)