MongoDB查询从数组中查找和提取值

时间:2017-07-11 12:40:27

标签: mongodb

我想从数组中提取值。 现在我有

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"}}})

但它是返回数组

1 个答案:

答案 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 ] }