2016-11-21 8 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 если есть способ однократному проекта.

 Смежные вопросы

  • Нет связанных вопросов^_^