gpt4 book ai didi

javascript - 嵌套数组内的 Mongoose findOneAndUpdate

转载 作者:行者123 更新时间:2023-12-03 05:19:52 24 4
gpt4 key购买 nike

如果 componentId 和 wfInstanceId id 匹配,我需要更新“fields”数组中的类型、键和值。

这是我需要这样做的文档。

{
"_id": {
"$oid": "586b6d756937c22f207dd5af"
},
"wfInstanceId": "0111",
"workflowId": "ash3",
"folderURL": "ash3",
"teamName": "teamName",
"dataStream": [
{
"componentInstanceId": "componentInstanceId1",
"componentId": "componentId1",
"_id": {
"$oid": "586b6d756937c22f207dd5b0"
},
"fields": [
{
"type": "String",
"value": "value1",
"key": "key",
"_id": {
"$oid": "586b6d756937c22f207dd5b1"
}
},
{
"type": "String",
"value": "value2",
"key": "key1",
"_id": {
"$oid": "586b6d756937c22f207dd5b1"
}
}
]
},
{
"componentInstanceId": "componentInstanceId2",
"componentId": "componentId22",
"_id": {
"$oid": "586b6d756937c22f207dd5b0"
},
"fields": [
{
"type": "String",
"value": "value1",
"key": "key",
"_id": {
"$oid": "586b6d756937c22f207dd5b1"
}
},
{
"type": "String",
"value": "value2",
"key": "key2",
"_id": {
"$oid": "586b6d756937c22f207dd5b1"
}
}
]
}
],
"id": "38f356f0-d196-11e6-b0b9-3956ed7f36f0",
"__v": 0
}

我这样尝试过,我还尝试了 $set 而不是 $push,这也不起作用。

Model.findOneAndUpdate( {'wfInstanceId': '0111', 'dataStream.componentId': 'componentId1'}, {$push : { 'dataStream.fields.$.key' : 'sdsdds' }}, { upsert: true }, function (err, data) {
if (err) {
reject(err);
console.log('error occured' + err);
}
console.info("succesfully saved");
resolve (data);
});

正如他们在本文 DOC 中所描述的那样它应该适用于更新方法,但对我来说也不起作用。对于解决我面临的这个问题的任何帮助,我们将不胜感激。

最佳答案

当您使用 $ 运算符时,它仅更新每个文档中的第一个匹配的数组元素。

到目前为止, Mongoose 还不可能直接更新所有数组元素。

您可以根据您的情况执行此操作:

db.collection.find({'wfInstanceId': '0111', 'dataStream.componentId': 'componentId1'})
.forEach(function (doc) {
doc.datastream.forEach(function (datastream) {
if (dataStream.componentId === componentId1) {
dataStream.fields.forEach(function(fields){
// you can also write condition for matching condition in field
dataStream.fields.key="";
dataStream.fields.value="";
dataStream.fields.type="";
}
}
});
db.collection.save(doc);
});

这是正常的javascript代码。我认为对于 mongo 新手来说更清楚。

关于javascript - 嵌套数组内的 Mongoose findOneAndUpdate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41441802/

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