在数组元素中添加子文档

时间:2017-01-26 13:51:07

标签: node.js mongodb mongoose mongodb-query aggregation-framework

下面的函数返回一个数组' results'参数:

module.exports.get = function (req, res) {
    objModel.find(function (err, results) {
        res.json({ record: results })
    })
};

我想在每个元素的一个新对象中添加它的引用集合记录列表。如下所示:

for (var i = 0; i < results.length; i++) {
    module.exports.get = function (req, res) {
        objModel.find({ _id: results[i]._id }, function (err, record) {
            results[i]["objNew"] = record
        })
    };
}

我的完整代码如下:

module.exports.get = function (req, res) {
    objModel.find(function (err, results) {
        for (var i = 0; i < results.length; i++) {
            module.exports.get = function (req, res) {
                objModel.find({ _id: results[i]._id }, function (err, record) {
                    results[i]["objNew"] = record
                })
            };
        }
        res.json({ recordList: results })
    })
};

它返回错误:&#34; objNew&#34;不明。

我在此链接中显示输出记录json列表:Plunker

1 个答案:

答案 0 :(得分:1)

我相信您是在聚合框架中的 $lookup 运算符之后,它将为您提供所需的结果。考虑运行以下聚合操作:

module.exports.get = function (req, res) {
    objModel.aggregate([
        {
            "$lookup": {
                "from": "objModelcollectionName", /* "self-join" with collection */
                "localField": "_id",
                "foreignField": "_id",
                "as": "objNew"
            }
        }
    ]).exec(function (err, results) {
        if (err) throw err;
        res.json({ recordList: results })
    })
};