2016-11-21 87 views
0

如何獲得返回的$filter匹配的值?從過濾結果匹配中獲取值

例如使用此代碼...

db.col.aggregate([ 
    {$project : { 
     "Place" : {$filter: {input: "$fields",as: "field",cond: { $eq: [ "$$field.name", "ABC" ]}}}, 
    }} 
]); 

我會得到

[{"name":"ABC" ,"value":"DEF"}] 

Place值。我想知道如何得到公正的價值(DEF

+0

在聚合中添加另一個項目,例如'{「$ project」:{「value」:「$ place.value」}} – Yogesh

回答

0

感謝來自約傑什的意見,琢磨出來

db.col.aggregate([ 
    {$project : { 
     "Place" : {$filter: {input: "$fields",as: "field",cond: { $eq: [ "$$field.name", "Place" ]}}}, 
    }}, 
    {$project : { 
     "Place" : {$arrayElemAt : ["$Place.value",0]} 
    }} 
]); 

..wondering如果有一種方式來單項目吧。

相關問題