批量更新猫鼬对象中的数组
Posted
技术标签:
【中文标题】批量更新猫鼬对象中的数组【英文标题】: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
请告诉我简单的方法。
谢谢。
【问题讨论】:
【参考方案1】:我使用了lodash方法pluck。
lodash.pluck(,);
将给出arrayObj中的属性值列表。
studentList = lodash.pluck(参与者,"学生"); studentIdList = lodash.pluck(studentList,"_id");
【讨论】:
以上是关于批量更新猫鼬对象中的数组的主要内容,如果未能解决你的问题,请参考以下文章