我想从数组中提取值。 现在我有
db.getCollection('typeE').distinct("list.name",{"list.name":"C"})
我有这样的结构
object(1)"list":[{"name":"A","value":10},{"name":"B","value":20},{"name":"C","value":50}]
object(2)"list":[{"name":"D","value":100},{"name":"E","value":70}]
我想收到50,但现在只收到对象(1)
我也试过
db.getCollection('typeE').distinct("list.value",{"list": {$elemMatch: {"name":"C"}}})
但它是返回数组
答案 0 :(得分:1)
你这样做是错误的。你想要的是什么(如果我找对你)是获得value
"name": "C"
个子文档
你应该试试这个:
db.getCollection('typeE').aggregate([
{$unwind: "$list"},
{$match: { "list.name": "C"}},
{$group: {_id: null, distinctValue: {$addToSet: "$list.value"}}}
])
这将输出:
{"_id": null, "distinctValue": [ 50 ] }