gpt4 book ai didi

node.js - 如何在 Mongoose 中将元素添加到嵌套在另一个数组中的数组?

转载 作者:太空宇宙 更新时间:2023-11-03 22:52:39 24 4
gpt4 key购买 nike

我还有一个关于 Mongoose 的问题。这次我想更新文档中其他数组内的数组元素。它的结构看起来像这样

{
"_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 数组中。

最佳答案

试试这个

User.update({_id:ObjectId(userId),'projects.name': data.project},{$push:{'projects.$.tasks':{yourTaskObject}}})

更新中的 $ 作为位置运算符,获取父数组的位置

关于node.js - 如何在 Mongoose 中将元素添加到嵌套在另一个数组中的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36824071/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com