【问题标题】:Mongo date aggregation operators with ObjectId带有 ObjectId 的 Mongo 日期聚合运算符
【发布时间】:2013-07-18 03:13:02
【问题描述】:

我正在尝试将 ObjectId 用作创建日期持有者,但在尝试进行聚合查询时遇到了一些问题。特别是我们希望使用日期聚合运算符按月对文档进行分组,但该运算符显然不适用于 ObjectId。有没有办法解决它,还是我必须开始为每个文档使用单独的 CreationTime 字段?

这是我正在尝试的查询 -

db.People.aggregate([
{
    $match: {
        $or: [{"Name":"Random1"}, {"Name":"Random2"}]
    }
},
{
    $project: {
        Name: "$Name",
        Year: {$year: "$_id"},
        Month: {$month: "$_id"}
    }
},
{
    $group: {
        _id: {Name: "$Name", Year: "$Year", Month: "$Month"},
        TotalRequests: {$sum:1}
    }
}

])

【问题讨论】:

  • 如果 _id 是 ObjectId 类型,它不能工作,因为它不是一个日期。它是日期的哈希值。据我所知,反向操作是不可能的。
  • 实际上 ObjectID 有一个getTimestamp() method,但不可能在 AF 上使用它。如果你真的想要这个功能,你应该对thisJIRA 问题投票。

标签: mongodb aggregation-framework


【解决方案1】:

现在,您需要保留一个单独的字段,因为聚合框架还不能处理这个问题。在https://jira.mongodb.org/browse/SERVER-9406 有一张服务器票可以实现它,所以我建议你投票给它(我刚刚投了)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-25
    • 2017-10-07
    • 2013-09-12
    • 1970-01-01
    • 2016-09-25
    • 2013-09-22
    • 1970-01-01
    • 2018-08-16
    相关资源
    最近更新 更多