gpt4 book ai didi

node.js - Mongoose 更新深度数组

转载 作者:太空宇宙 更新时间:2023-11-04 02:32:59 25 4
gpt4 key购买 nike

尝试使用 $set 更新数组中的文档,但看起来需要以不同的方式完成。这是我正在尝试的代码:

Schema.update({ _id: id, 'customers._id': customerID }, { $set: {
'customers.$.addresses.isDefault': false
}}, function (err) {
if (err) // err
// do something
});

看起来它不喜欢“customers.$.addresses.isDefault”。我的数据如下所示:

{
_id: ObjectId,
customers: [{
_id: ObjectId,
addresses: [{
_id: ObjectId,
isDefault: Boolean
}]
}]
}

我正在尝试将该客户的所有地址的 isDefault 设置为 false。

更新:这是它给我的错误:MongoError:无法使用部分(customers.0.addresses.isDefault的地址)来遍历元素

最佳答案

最终只是循环遍历数组:

Schemas.Client.findOne({ _id: id, 'customers._id': customerID }).select('customers.$.addresses').exec(function (err, client) {
if (err) { return next(err); }
if (!client) { return next(); }
if (client.customers[0].addresses.length) {
var addresses = client.customers[0].addresses;
for (var i = 0; i < addresses.length; i++) {
addresses[i].isDefault = false;
}
client.save(function (err) {
if (err) { return next(err); }
// finish
});
}
});

关于node.js - Mongoose 更新深度数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24853855/

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