我还有另一个关于猫鼬的问题。这次我想在我的文档中更新其他数组中的数组元素。它的结构看起来像这样
{
"_id" : ObjectId("5702e0c732faf57c7bb9ebe9"),
"email" : "john@doe.me",
"projects" : [
{
"name" : "inbox",
"title" : "Inbox",
"tasks" : [
{
"id" : "1",
"text" : "First task",
"labels" : [
"home",
"phone"
],
"dueDate" : "2016-03-18T11:10:00",
"created" : "2016-03-10T10:10:00",
"completed" : false
}
]
},
{
"name" : "work",
"title" : "Work",
"tasks" : [
{
"id" : "4",
"text" : "Fourth",
"labels" : [
"home",
"phone"
],
"dueDate" : "2016-03-18T11:10:00",
"created" : "2016-03-10T10:10:00",
"completed" : false
}
]
}
]
}
我希望按_id
找到文档,按name
选择项目,然后在tasks
数组中添加新任务。做这个的最好方式是什么?现在我尝试使用findOne
来查看我是否正在查询正确的位置
User.findOne(
{ _id: Mongoose.Types.ObjectId(userId), 'projects.name': data.project },
(err, data) => {
if (err) { throw err; }
console.log(data);
}
);
但它返回数组中的所有项目,我不知道如何选择我正在寻找的项目并将元素添加到tasks
数组。
答案 0 :(得分:3)
试试这个
User.update({_id:ObjectId(userId),'projects.name': data.project},{$push:{'projects.$.tasks':{yourTaskObject}}})
$ in update作为位置运算符,用于获取父数组的位置
答案 1 :(得分:1)
我找到了解决方案
go()