Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 存在空字段的Mongoose模型选择查询_Node.js_Mongodb_Mongoose - Fatal编程技术网

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

Node.js 存在空字段的Mongoose模型选择查询,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,当我写作时: User.find({}).select('email firstName lastName').exec(...) 我希望生成的用户具有以下结构: { email: 'user@email.com', firstName: null, lastName: null } 即使未为此记录设置firstName和lastName。相反,我得到: { email: 'user@email.com' } 有什么方法可以实现我想要的吗?正如评论中提到的,您可以借助聚合和

当我写作时:

User.find({}).select('email firstName lastName').exec(...)
我希望生成的
用户
具有以下结构:

{
  email: 'user@email.com',
  firstName: null,
  lastName: null
}
即使未为此记录设置
firstName
lastName
。相反,我得到:

{
  email: 'user@email.com'
}

有什么方法可以实现我想要的吗?

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

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
    }
)

你自己添加它们这不能由模型定义或其他东西自动猜测?你可以使用
聚合
来实现这一点,这是猫鼬的方法吗?我总是混淆使用mongodb原始语法查询还是使用mongoose形式主义。