Mongodb 在子文档数组中查找和更新

Mongodb 在子文档数组中查找和更新,mongodb,mongoose,Mongodb,Mongoose,我是mongodb世界的新手,我已经花了很多时间试图解决以下问题 我的收藏名为“routes”,包含以下文档: { idGateway: 0, priority: 1, channels: [ { id: 'chanel_1', control: { timestamp: ISODate("2015-09-19T16:17:12.393Z"),

我是mongodb世界的新手,我已经花了很多时间试图解决以下问题

我的收藏名为“routes”,包含以下文档:

{
    idGateway: 0,
    priority: 1,
    channels: [
        {
            id: 'chanel_1',
            control: {
                timestamp: ISODate("2015-09-19T16:17:12.393Z"),
                qty: 3
            }
        },
        {
            id: 'chanel_2',
            control: {
                timestamp: ISODate("2015-09-18T16:17:12.393Z"),
                qty: 5
            }
        }
    ]
},
{
    idGateway: 1,
    priority: 2,
    channels: [
        {
            id: 'chanel_3',
            control: {
                timestamp: ISODate("2015-09-19T16:17:12.393Z"),
                qty: 3
            }
        },
        {
            id: 'chanel_4',
            control: {
                timestamp: ISODate("2015-09-18T16:17:12.393Z"),
                qty: 5
            }
        }
    ]
}
我的需要是选择一个文档,同时更新其时间戳/数量字段(作为FindModify)。选择的标准是:

  • 获取具有最低优先级的文档
  • 从文档中,选择具有最大值(时间戳)的频道文档
  • 更新时间戳和数量
  • 并仅返回频道的文档(频道1)
因此,一旦我选择了通道_1,我必须避免其他过程,在更新之前再次选择它。我该怎么做


谢谢

您所说的“选择具有最大时间戳的频道文档”是什么意思?您将时间戳和数量更新为什么?更详细地说,从最低的“优先级”中,我必须从通道阵列中选择较旧的通道。如果(当前时间+1min>时间戳)设置时间戳=当前时间,则数量必须增加1