gpt4 book ai didi

node.js - 如何使用 Mongoose 使用 findByIdAndUpdate 更改子数组

转载 作者:太空宇宙 更新时间:2023-11-04 00:08:58 24 4
gpt4 key购买 nike

我正在创建一个 MEAN 堆栈待办事项列表,需要有关以下 Mongoose 语法的帮助。

我正在尝试将 todos 数组的已完成字段更新为 true。经过研究,我能够使用 Mongoose 模型 findOneAndUpdate 更新我的子文档。

但是,我也在尝试学习如何使用findByIdAndUpdate。我似乎无法让它发挥作用。我哪里出错了?

我的 Mongoose 文档包含嵌套子文档待办事项:

{
//this is my userID
"_id": ObjectId("5b21cbdeebe2b414906b2b31"),
"username": "john",
"todos": [{
// this is my id
"_id": ObjectId("5b21cbdeebe2b414906b2b32"),
"item": "testing",
"completed": false
}, {
// this is my id
"_id": ObjectId("5b22dd570f15b72e949591f6"),
"item": "adding new",
"completed": false
}]
}

我的 Mongoose 功能:

module.exports.markItemCompleted = function(id, callback) {
Item.findByIdAndUpdate(id, { $set: { completed: true }}, callback);
}

最佳答案

您需要使用$[] positional运算符以更新数组中的每个元素

module.exports.markItemCompleted = function(id, callback) {
Item.update(
{ _id: id },
{ $set: { 'todos.$[].completed': true }}, callback
);
}

注意:您应该有mongodb 版本 3.6

关于node.js - 如何使用 Mongoose 使用 findByIdAndUpdate 更改子数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50882163/

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