2016-12-14 2 views
0

私はテーブル内のデータを調べるために適切なクエリを見つけようといくつかの問題があり、もうelementMatchで試してみました。 $ redactを試してみましたが、私は2つのドキュメントのうち1つしか取得できません。私が間違っていることは何ですか?なぜ私は1つしかないのですか? は、私は、この文書コレクション内に複数の要素マッチがあるクエリを検索する

{ 
"_id" : "dff26f9c-350b-4bd5-bc62-62c19f21100c", 
"sensorId" : "123456", 
"sensorModel" : "LOOP", 
    "attachments" : [ 
    { 
     "type" : "StructAttachment", 
     "data" : "STRUCT DATA" 
    }, 
    { 
     "type" : "BlobAttachment", 
     "data" : { "$binary" : "QkxPQl9EQVRB", "$type" : "00" } 
    }, 
    { 
     "type" : "otherData", 
     "data" : { "$binary" : "QkxPQl9EQVRB", "$type" : "00" } 
    } 
] 

}

そして、私が探しています結果をされてい

{ 
"_id" : "dff26f9c-350b-4bd5-bc62-62c19f21100c", 
"sensorId" : "123456", 
"sensorModel" : "LOOP", 
    "attachments" : [ 
    { 
     "type" : "StructAttachment", 
     "data" : "STRUCT DATA" 
    }, 
    { 
     "type" : "BlobAttachment", 
     "data" : { "$binary" : "QkxPQl9EQVRB", "$type" : "00" } 
    } 
] 

}

私は「(_idを通って、attachment.typeのためにフィルタリングします「structAttachment」または「blobAttachment」)

答えて

1

使用以下のように$setIsSubsetと3210:

db.collectionName.aggregate({ 
    "$project": { 
    "sensorId": 1, 
    "sensorModel": 1, 
    "attachments": { 
     "$filter": { 
    "input": "$attachments", 
    "as": "el", 
    "cond": { 
     "$setIsSubset": [ 
     ["$$el.type"], 
     ["StructAttachment", "BlobAttachment"] 
     ] 
    } 
     } 
    } 
    } 
}).pretty() 
+1

はあなたがIDを逃すが、私は db.getCollection(「測定」)を追加することができた、高速な応答をありがとう集計( { \t $試合:{ "_id": "dff26f9c-350B-4bd5-bc62-62c19f21100c"} }、{ "$プロジェクト":{ "sensorId":1、 "sensorModel":1、 "添付ファイル":{ "$ filter":{ "input": "$ attachments"、 "as": "attachment"、 "条件":{ "$ setIsSubset":[ [ "$$ attachment.type"]、 [ "StructAttachment"、 "BlobAttachment"] ] }}} }}) – Guel135

関連する問題