我是mongodb和mongoose的新手,我不知道如何更改数组中另一个对象中的对象。 这是我的架构的简单版本
const shiftSchema = new Schema({
phone: String,
order: {
startTime: String,
finishTime: String,
orders: [{
stat: boolean,
orderId: Number
}]
}
});
orderId实际上是每5个时间,因此orders中的第一个对象具有startTime + 5值作为orderId,而最后一个对象具有finishTime值。
所以现在我想找到文档,例如将0911111作为电话,将04090405作为startTime,将04090900作为finishTime,在其中,我想仅更新其orderId为04090435的对象(如果其统计信息为false),并且也进行更新前2个对象。分别是04090430和04090425,并检查它们的统计信息是否为假,并且即使这3个对象之一具有真实的统计信息,也不会对其进行更新并发送错误。
我知道它已经回答了很多次,但是我在特定条件下找不到适合我的任何解决方案,所以请帮助我。
注意:我知道要更新这种数组,我可以这样做:
Shift.updateOne({
'order.orders': {$elemMatch: {orderId: {$lte: start}, stat: "true"}}
}, {
'$set': {'order.orders.$.stat': 'ready'}
})
但是它只是更新整个Shift集合,但我只想更新一个文档。
所有提示将不胜感激。谢谢