首页 > 解决方案 > 如何从状态数组中提取数据

问题描述

你好,我正在使用 Compass 作为我的 MongoDb 工具。

现在,我有一个包含产品有效状态的数组,一旦产品收到新状态,我将其添加到“状态”数组中。

我需要的是提取一个包含每个状态添加到数组中的日期的对象,请参见下面的示例:

{
   _id: ObjectId("5e8f7ddb4af84bbb7431bc61"),
   Status: [`enter code here`
    {
        _id: ObjectId("5e8f7ddb4af84bbb7431bc62"), 
        Last: 'Added',
        Date: '2020-04-20 08:30:00'
    },
    {
        _id: ObjectId("5e8f7ddb4af84bbb7431bc63"),
        Last: 'Proccessed',
        Date: '2020-04-20 09:30:00'
    },
    {
        _id: ObjectId("5e8f7ddb4af84bbb7431bc64"),
        Last: 'Concluded',
        Date: '2020-04-20 14:00:00'
    },
    {
        _id: ObjectId("5e8f7ddb4af84bbb7431bc65"),
        Last: 'Finished',
        Date: '2020-04-20 14:30:00'
    }
   ]
}    

我需要的是为每个产品提取一个对象数组,如下所示:

[{
   _id: ObjectId("5e8f7ddb4af84bbb7431bc61"),
  Added: '2020-04-20 08:30:00',
  Proccessed: '2020-04-20 09:30:00',
  Concluded: '2020-04-20 14:00:00',
  Finished: '2020-04-20 14:30:00
}]

如何使用聚合来实现这一点?在此先感谢您的帮助。

标签: mongodbaggregation-frameworkaggregationmongodb-compass

解决方案


推荐阅读