如何解决通过mongoose更新mongodb中嵌套数组中的数据对象
我在更新数据方面存在严重问题。我不知道如何更新文档中数组对象中的特定字段。
这是我的模式模型:
var shiftSchema = new Schema({
Phone: String,final: Boolean,statusSH: String,order: {
startTime: String,finishTime: String,income: String,orders: [{
stat: String,orderId: String,customerPhone: String,orderQuantity: String,orderCost: String,orderCondition: String,orderTag: String
}]
}
});
当我使用“查找”时,它会给我文档而不只是对象。
现在如何找到“ orderId”来编辑“ stat”?
请注意,我没有要更新的对象的索引,只能使用“ find”或“ findOne”。
我在网上搜索了所有内容,却找不到很好的指南和示例。
对不起,我英语不好。
所有提示将不胜感激。谢谢。
解决方法
您可以尝试运行此查询以更新stat属性:
shiftSchema.updateOne({
'order.orders.orderId': 'id'
},{
'$set': {'order.orders.$.stat': 'newStatus'}
})
.then((result) => {
console.log(result)
},(e) => {
console.log(e)
})
您可以看到我使用positional $ operator来访问数组中的元素并更新它而未指定该元素的位置(带有索引)。
我还使用$set替换了字段的值。
仅使用find
或findOne
就不会进行实际的更新。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。