【问题标题】:Batch Update an array in mongoose object批量更新猫鼬对象中的数组
【发布时间】:2015-01-13 04:59:47
【问题描述】:

我的架构如下。学生可以参加任何没有。事件数。每个事件可以有任意数量的学生。

Student{
name:String,
age:Number,
.
.
.,
events:{
 type:
  [
   {type:Schema.ObjectId,
    ref:'Event'}
  ]
}
}

Event{
title:String,
desc:String,
eventDate:Date,
participants:{
type:
      [{
      student: {type:Schema.ObjectId,
               ref:'Student'},
      status : String
      }]
}

}

我的要求: 每次,我创建一个事件,我都需要将该事件的所有参与者推送到事件对象中。反过来,标记所有参与者内部的事件引用。

我的代码是

function handleTeamParticipants(eventObj, participants) {
    Student
        .find({
            $or: [{
                _id: participants[0].student._id
            }, {
                _id: participants[1].student._id
            }]
        })
        .populate('events events.participants events.participants.student')
        .exec(function(err, students) {

        var studentLength = students.length,
            result = [];
        var saveAll = function() {
            var doc = students.pop();
            Student.populate(doc, {
                path: 'events.participants.student',
                model: 'Student'
            }, function(err, student) {
                student.events.push(eventObj);
                student.save(function(err, saved) {
                    if (err) next(err); //handle error
                    result.push(saved);
                    if (--studentLength) saveAll();
                    else // all saved here
                    {

                        return res.status(200).send(eventObj);
                    }
                });
            });
        };
        saveAll();
    });

}

此代码正在运行。 因此,通过这种方式,我只更新了前两个参与者并依次添加到 eventobj。但我希望查找查询选择所有参与者.student._id

请告诉我简单的方法。

谢谢。

【问题讨论】:

    标签: arrays mongodb mongoose batch-updates


    【解决方案1】:

    我使用了lodash方法pluck。

    lodash.pluck(,);

    将给出arrayObj中的属性值列表。

    studentList = lodash.pluck(参与者,"学生"); studentIdList = lodash.pluck(studentList,"_id");

    【讨论】:

      猜你喜欢
      • 2019-09-14
      • 2021-12-28
      • 2022-08-18
      • 2015-03-03
      • 1970-01-01
      • 2018-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多