【问题标题】:Filter timestamp with mongoDb使用 mongoDb 过滤时间戳
【发布时间】:2013-06-26 14:22:10
【问题描述】:

假设这个 Json 从我的 mongoDb 导出

{
   "_id":{
      "$oid":"51ca002d9e67460354bb0089"
   },
   "node":{
      "id":"1",
      "components":[
         {
            "sensors":[
               {
                  "name":"backup-job-name",
                  "value":"Job_2"
               },
               {
                  "name":"backup-job-id",
                  "value":"187"
               },
               {
                  "name":"backup-start-date",
                  "value":"1372138227"
               },
               {
                  "name":"backup-stop-date",
                  "value":"1372138235"
               },
               {
                  "name":"backup-nb-errors",
                  "value":"0"
               },
               {
                  "name":"backup-nb-warnings",
                  "value":"0"
               },
               {
                  "name":"backup-source-files",
                  "value":"402"
               },
               {
                  "name":"backup-source-bytes",
                  "value":"168571449"
               },
               {
                  "name":"backup-status",
                  "value":null
               }
            ],
            "type":"backup",
            "serial":"1-backup-backup-job-name-Job_2"
         },
         {
            "sensors":[
               {
                  "name":"backup-job-name",
                  "value":"Test_bckp"
               },
               {
                  "name":"backup-job-id",
                  "value":""
               },
               {
                  "name":"backup-start-date",
                  "value":"0"
               },
               {
                  "name":"backup-stop-date",
                  "value":"0"
               },
               {
                  "name":"backup-nb-errors",
                  "value":"0"
               },
               {
                  "name":"backup-nb-warnings",
                  "value":"0"
               },
               {
                  "name":"backup-source-files",
                  "value":"0"
               },
               {
                  "name":"backup-source-bytes",
                  "value":"0"
               },
               {
                  "name":"backup-status",
                  "value":null
               }
            ],
            "type":"backup",
            "serial":"1-backup-backup-job-name-Test_bckp"
         }
      ]
   },
   "timestamp":1372192813
}

我使用 python,我想获取“备份开始日期”(存储为时间戳)大于给定值的文档。

我试过了

collection.find({
        'node.components.type': 'backup', 
        'node.components.sensors': {'name': 'backup-start-date', 'value': {'$gte': ts_to_compare_with}}}):

但结果中的任何文档。我的查询错了吗?

【问题讨论】:

  • 为什么您的时间戳存储为字符串?
  • 因为它是一个填充 mongo 的远程代理。是否有将 str 转换为 int 的运算符?在 mongo 文档中找不到任何内容。编辑。即使 ts 为 int,请求也会失败

标签: python mongodb


【解决方案1】:

有两件事 - 您想要匹配组件数组中的传感器文档,$gte 仅适用于整数和日期。

如果您将数据转换为整数,那么您可以使用$gte 并像这样查询:

db.test.find({
  'node.components.type': 'backup', 
  'node.components.sensors': { 
      $elemMatch: {'name': 'backup-start-date', 
                   'value': {'$gte': 168571445}}}})

【讨论】:

猜你喜欢
  • 2021-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-18
  • 1970-01-01
  • 2012-10-01
  • 2021-12-25
相关资源
最近更新 更多