首页 > 解决方案 > MongoDB $lookup 聚合 - 从文档中仅检索一个字段

问题描述

这是我的汇总。我只想从生成的 JSON 中获取一个字段,而不是整个文档。

 Listings.aggregate([
    {
        $lookup: {
            from: "users",
            localField: "userid",
            foreignField: "_id",
            as: "user"
        }
    },  
    { $sort : { _id : -1 } }
]).exec(function (err, data) {
    if (err) {
        return res.status(500).json({
            title: 'An error occurred',
            error: err
        });
    }
    res.json(data);
});

这是我从请求中得到的结果 JSON。

{
   _id: "5c8b5c148ee19c6a092a76fe",
   name: "Brian Ken",
   email: "brian@kena.com",
   pass: "sdlajsdlj99939*&*&sdsdljsjdljllj"
}

理想情况下,我只想提取电子邮件字段,而不是该文档中的所有内容。我希望我的解释是令人满意的。有人帮忙吗?

标签: mongodbmongoose

解决方案


在 $sort 管道之后使用 $project 管道进行跟进

.
.   // SORT
.
},
{
    $project: {
        _id: 0,
        name: 0,
        email: 1,
        pass: 0
    }
}

在 $project 中,0表示现在在结果中显示该字段,1表示显示

您从MongoDB 的官方网站了解更多关于 $project的信息


推荐阅读