从过滤结果匹配中获取值
get value from a filter result match
如何获取返回的 $filter
匹配项的值?
例如使用此代码...
db.col.aggregate([
{$project : {
"Place" : {$filter: {input: "$fields",as: "field",cond: { $eq: [ "$$field.name", "ABC" ]}}},
}}
]);
我会得到
[{"name":"ABC" ,"value":"DEF"}]
作为 Place
的值。我想知道如何获得值 (DEF
)
感谢 Yogesh 的评论,弄明白了
db.col.aggregate([
{$project : {
"Place" : {$filter: {input: "$fields",as: "field",cond: { $eq: [ "$$field.name", "Place" ]}}},
}},
{$project : {
"Place" : {$arrayElemAt : ["$Place.value",0]}
}}
]);
..想知道是否有单投影的方法。
如何获取返回的 $filter
匹配项的值?
例如使用此代码...
db.col.aggregate([
{$project : {
"Place" : {$filter: {input: "$fields",as: "field",cond: { $eq: [ "$$field.name", "ABC" ]}}},
}}
]);
我会得到
[{"name":"ABC" ,"value":"DEF"}]
作为 Place
的值。我想知道如何获得值 (DEF
)
感谢 Yogesh 的评论,弄明白了
db.col.aggregate([
{$project : {
"Place" : {$filter: {input: "$fields",as: "field",cond: { $eq: [ "$$field.name", "Place" ]}}},
}},
{$project : {
"Place" : {$arrayElemAt : ["$Place.value",0]}
}}
]);
..想知道是否有单投影的方法。