问题描述
我在更新数据方面存在严重问题。我不知道如何更新文档中数组对象中的特定字段。
这是我的模式模型:
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
就不会进行实际的更新。