gpt4 book ai didi

node.js - Mongoose - 插入对象子数组

转载 作者:可可西里 更新时间:2023-11-01 10:24:04 24 4
gpt4 key购买 nike

我的 Mongoose 对象:

{
"_id" : "568ad3db59b494d4284ac191",
"name" : "MyCompany",
"description": "whatever"
"items" : [
{
"_id" : "568ad3db59b494d4284ac19f",
"fields" : {
"Name" : "Item1",
"Internal ID" : "ID00042",
"tags" : [
{
"Description" : "Tag1",
"Level" : 2
},
{
"Description" : "Tag2",
"Level" : 3
}
]
}
}, {
"_id" : "568ad3db59b494d4284ac19f",
"fields" : {
"Name" : "Item2",
"Internal ID" : "ID00043",
"tags" : [
{
"Description" : "Tag1",
"Level" : 5
},
{
"Description" : "Tag5",
"Level" : 1
}
]
}
}, {..}
]
}

我需要推送以下标签:

var obj = {
"Description" : "myDescription",
"Level" : 3
};

进入以下项目的标签数组:

var internal_id = "ID00102";

我的尝试无效:

Company.findOneAndUpdate(
{ "_id": "568ad3db59b494d4284ac191", "items.fields['Internal ID]": internal_id },
{
"$push": {
"tags": thetag
}
},
function(err,doc) {
if (err) res.status(500).send(err);
return res.status(200).send(doc);
}
);

最佳答案

应用$push运算符与 $ positional operator 一起 在您的更新中将标记对象添加到 tags 字段。 <强> $ positional operator 将在 items 数组中识别要更新的正确元素,而无需明确指定元素在数组中的位置,因此您的最终更新语句应如下所示:

Company.update(
{ "_id": "568ad3db59b494d4284ac191", "items.fields.Internal ID": internal_id },
{
"$push": {
"items.$.fields.tags": thetag
}
}
)

关于node.js - Mongoose - 插入对象子数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35699393/

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