检查和更新猫鼬mongodb中的嵌套文档

时间:2020-09-04 19:44:20

标签: node.js mongodb mongoose find updates

我是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集合,但我只想更新一个文档。

所有提示将不胜感激。谢谢

0 个答案:

没有答案