如何在mongoose中以数组格式填充值



我有一个如下的模型结构,其中阶段是从另一个模型中检索的

var stageSchema = new Schema({
  Name: String,
  Stage: {
    type: Schema.ObjectId,
    ref: 'StageName',
  }
}, {
  collection: 'StageList'
});

我已经编写了使用猫鼬检索数据的查询,如下所示:

exports.findall = function(req, res) {
    stage.find().populate({path:'Stage',select:'-_id'}).lean().exec(function(err, value1) {
        res.send(value1);
  });
};

它显示如下所示的结果

[{_id:213465465465465, Name: "AAA", Stage: {Value: "Stage1"}},{_id:213465465465465, Name: "BBB", Stage: {Value: "Stage2"}}]

但我希望Stage是数组格式,没有键"Value",如下所示:

[{_id:213465465465465, Name: "AAA", Stage: ["Stage1"]},{_id:213465465465465, Name: "BBB", Stage: ["Stage2"]}]

请帮忙解决这个问题。提前谢谢。

要将Stage的结果文档修改为不带键"Value"的数组格式,请使用JavaScript的map()方法创建一个新数组,在该数组中您可以按如下方式修改数组中的对象:

exports.findall = function(req, res) {
    stage.find().populate({path: 'Stage', select: '-_id'}).lean().exec(function(err, results) {
        var value1 = results.map(function (r){
            var stageVal = r.Stage.Value;
            r.Stage = [stageVal];
            return r;
        });
        res.send(value1);
    });
};

最新更新