首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在pymongo管道中创建datetime对象?

如何在pymongo管道中创建datetime对象?
EN

Stack Overflow用户
提问于 2015-12-23 06:41:25
回答 1查看 87关注 0票数 0

我有一些代码设置了以下管道: filter集合、项目年和月、按年和月分组,然后使用像YYYY 01这样的datetime对象结束。

示例文档:

代码语言:javascript
复制
{
  _id: 123456
  foo: "bar"
  dt: ISODate("2015-12-24T11:59:00Z")
}

示例代码:

代码语言:javascript
复制
from pymongo import MongoClient
db = client.testDB
posts = db.testCollection
pipeline = [
  {"$match": {"foo":"bar"}},
  {"$project": {
      "year": {"$year": "$dt"},
      "month": {"$month": "$dt"},
    }
  },
  {"$group": {
      "_id": { "dt": ??? },
      "totalCount": { "$sum": 1 }
    }
  },
  {"$out": "myResults"}
}
posts.aggregate(pipeline)

目标:

代码语言:javascript
复制
{
  _id: {dt: ISODate("2015-12-01T00:00:00Z")}
  totalCount: 8
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-27 10:28:51

为了将日期预测到一个月的第一个月,例如,将2015-12-24转换为2015-12-01,我对此页上的代码进行了如下修改:

示例文档:

代码语言:javascript
复制
{
  _id: 123456
  foo: "bar"
  dt: ISODate("2015-12-24T11:59:00Z")
}

代码:

代码语言:javascript
复制
from pymongo import MongoClient
db = client.testDB
posts = db.testCollection
pipeline = [
  {"$match": {"foo":"bar"}},
  {
    "$project": {
      "dt": "$dt"
      "d": {"$dayOfMonth": "$dt"},
      "h": {"$hour": "$dt"},
      "m": {"$minute": "$dt"},
      "s": {"$second": "$dt"},
      "ml": {"$millisecond": "$dt"},
    }
  },
  {
    "$group": {
      "_id": {
        "$subtract": [
          "$dt",
          {
            "$add": [
              "$ml",
              {"$multiply": ["$s", 1000]},
              {"$multiply": ["$m", 60, 1000]},
              {"$multiply": ["$h", 60, 60, 1000]},
              {"$multiply": [{"$subtract": ["$d", 1]}, 24, 60, 60, 1000]},
            ]
          }
        ] 
      },
      "totalCount": { "$sum": 1 }
    }
  },
  {"$out": "myResults"}
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34430020

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档