2016-12-14 95 views
0

我在嘗試查找適當的查詢以查看數據在我的表中時遇到了一些問題,我已經嘗試過使用elementMatch,在其他問題中閱讀了很多內容。嘗試$編輯,但我只能得到2個文件中的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

使用$filter$setIsSubset如下:

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」, 「COND」:{ 「$ setIsSubset」:[ [ 「$$ attachment.type」], [ 「StructAttachment」, 「BlobAttachment」] ] } } } } }) – Guel135

相關問題