gpt4 book ai didi

javascript - findOneAndUpdate 数组中的嵌套对象

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

尝试使用 findOneAndUpdate() 更改 MongoDB 中数组内的对象。我不清楚 mongoDB 的 nodeJS 驱动程序的文档。该文件看起来像这样:

{
_id:ObjectID(),
some: string,
body: string,
steps:[
[0]{name: "foo", state:"Q"},
[1]{name: "bar", state:"Q"},
[n]{name: "fooBar", state:"Q"}
]
}

我需要查找步骤名称 (foo) 并将其状态设置为 P(表示进行中),然后在任务执行时设置为 C(表示完成),或者在出错时设置为 E。

然后我还需要获取下一步的名称。

查找文档并不难,因为我已经有了 _id,我需要的是更新部分。

编辑:这是我到目前为止所得到的

  async msg => {
const _id = msg.content.toString();
const id = new objectId(_id);
logger.info(`${name} consumer - Recieved new task, fetching details`, {
id
});
try {
const jobDetails = await collection.findOneAndUpdate(
{ _id: id },
{
/**/
}
);
await consumer.task(jobDetails);
} catch (e) {}
},

它是 rabbitMQ 消费者的框架

最佳答案

我不知道你会如何选择要设置的字母 - P、C 或 E,因为它不是很清楚,但是要替换 mongoDB 中的值,它看起来像这样(假设为“P”) :

myCollection.findOneAndUpdate({"_id": docId, "steps.name": "foo"},
{$set: {"steps.$.state": "P"}})
  1. 找到您需要更改的文档。
  2. 找到对象在数组 "steps.name": "foo" 中。你得到的位置数组中的那个对象。
  3. 您正在为对象的值设置新值属性( $ 反射(reflect)位置)。

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

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