1

私のmongoDbからのこのJsonエクスポートを想定してください

{
   "_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 を使用しており、"backup-start-date" (タイムスタンプとして保存) が特定の値より大きいドキュメントを取得したいと考えています。

私は試してみました

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

しかし、結果のすべてのドキュメント。私のクエリは間違っていますか?

4

1 に答える 1

2

2 つのことがあります。コンポーネント配列内のセンサー ドキュメントを照合する必要があり$gte、整数と日付でのみ機能します。

データを int に変換すると、次の$gteように使用してクエリを実行できます。

db.test.find({
  'node.components.type': 'backup', 
  'node.components.sensors': { 
      $elemMatch: {'name': 'backup-start-date', 
                   'value': {'$gte': 168571445}}}})
于 2013-06-26T14:44:29.860 に答える