【问题标题】:Get last timestamp from an array in pymongo从 pymongo 中的数组中获取最后一个时间戳
【发布时间】:2021-06-01 21:31:12
【问题描述】:

我有以下文件清单:

[
{'id': 1,
 'name': 'Coco',
 'data': [{'X': 10, 'datetime': datetime.datetime(2020, 1, 1, 1, 0)},
          {'X': 20, 'datetime': datetime.datetime(2019, 1, 1, 2, 0)}]
},
{'id': 2,
 'name': 'Kiki',
 'data': [{'X': 30, 'datetime': datetime.datetime(2015, 7, 10, 1, 0)},
          {'X': 40, 'datetime': datetime.datetime(2017, 10, 4, 2, 0)}]
]

如何从 data 字段中的每个列表中获取最后一个时间戳?我想得到类似的东西:

[
{'id': 1,
 'name': 'Coco',
 'data': [{'X': 10, 'datetime': datetime.datetime(2020, 1, 1, 1, 0)}]
},
{'id': 2,
 'name': 'Kiki',
 'data': [{'X': 40, 'datetime': datetime.datetime(2017, 10, 4, 2, 0)}]
]

【问题讨论】:

    标签: mongodb datetime mongodb-query pymongo


    【解决方案1】:

    试试这个:

    db.collectionName.aggregate([
        {
            $addFields: {
                "data": [{
                    $reduce: {
                        input: "$data",
                        initialValue: { $arrayElemAt: ["$data", 0] },
                        in: {
                            $cond: [
                                { $gt: ["$$value.datetime", "$$this.datetime"] },
                                "$$value",
                                "$$this"
                            ]
                        }
                    }
                }]
            }
        }
    ]);
    

    输出:

    /* 1 createdAt:3/3/2021, 9:15:27 PM*/
    {
        "_id" : ObjectId("603faf17bcece4372062bcf5"),
        "id" : 1,
        "name" : "Coco",
        "data" : [
            {
                "X" : 10,
                "datetime" : ISODate("2020-02-01T01:00:00.000+05:30")
            }
        ]
    },
    
    /* 2 createdAt:3/3/2021, 9:15:27 PM*/
    {
        "_id" : ObjectId("603faf17bcece4372062bcf6"),
        "id" : 2,
        "name" : "Kiki",
        "data" : [
            {
                "X" : 40,
                "datetime" : ISODate("2017-11-04T02:00:00.000+05:30")
            }
        ]
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-09-24
      • 1970-01-01
      • 2020-01-17
      • 1970-01-01
      相关资源
      最近更新 更多