2017-04-06 1 views
1

この私のコレクションに配列フィールドを検索:Monogdbが文書

db.app.aggregate([ 
{"$match":{ 
    "variables.controller":4444, 
     "variables.mod":41, 
     "variables.var":"41" 
    } 
    }, 
    {"$project":{ 
     "_id":0, 
     "variables.Data.Time":1, 
     "variables.Data.value":1 
     } 
     } 
]) 

を私のコレクションでは、私が最初に基づき、データのみの配列フィールドをオフに設定を取得する必要があります。

{ 
    "Id" : "4", 
    "tType" : "77", 
    "tId" : "001", 
    "variables" : [ 
     { 
      "controller" : 4444, 
      "mod" : 41, 
      "var" : "41", 
      "Type" : 4, 
      "vType" : "DI", 
      "duration" : "", 

      "Data" : [ 
       { 
        "Time" : 1483209000, 
        "value" : 50 
       }, 
       { 
        "Time" : 1483209000, 
        "value" : 50 
       } 
      ] 
     }, 
     { 
      "controller" : 1, 
      "mod" : 1, 
      "var" : "1", 
      "Type" : 11, 
      "vType" : "AO", 
      "duration" : "", 

      "Data" : [ 
       { 
        "Time" : 1483209000, 
        "value" : 30 
       }, 
       { 
        "Time" : 1483209000, 
        "value" : 30 
       } 

      ] 
     } 

    ] 
} 

これは私が試しましたフィルタ条件変数配列コントローラ、tTypeフィールドがありますが、上記の集計クエリではすべての変数配列を取得します

答えて

0

db.app.aggregate([ {$match:{ 
"variables.controller":4444, 
    "variables.mod":41, 
    "variables.var":"41" 
}}, {$project:{data:"$variables.Data", _id:0}},{$unwind:"$data"},{$unwind:"$data"},{$limit:1} ]).pretty() 
関連する問題