如果sub.v是本文档中所有sub.v中最高的,则获取sub.k ='a'的文档

时间:2015-03-02 13:34:38

标签: mongodb mongodb-query

我有以下文档结构,并且只有在相应的'mymap.k'='test_1'是文档中最高的时候才能获得mymap.v但所有的文档。

{ "name":"testDoc1", "mymap": [{"k":"test_1","v":5},{"k":"test_2","v":3}] }
{ "name":"testDoc2", "mymap": [{"k":"test_1","v":2},{"k":"test_2","v":4}] }
{ "name":"testDoc3", "mymap": [{"k":"test_3","v":6},{"k":"test_2","v":4},{"k":"test_3","v":6}] }
{ "name":"testDoc4", "mymap": [{"k":"test_3","v":2},{"k":"test_1","v":7},{"k":"test_2","v":4}] }

所以结果应该是:

{ "name":"testDoc1" }
{ "name":"testDoc4" }

我可以通过聚合框架实现这一目标吗?

我的方法是做类似以下的事情。但这根本不起作用。

db.col.aggregate([
 {$match:{"mymap.k":"test_1"}},
 {$unwind:"$mymap"},
 {$group: {_id:"$_id", mymap: { k:{$first:"$mymap.k"}, v:{$max:"$mymap.v"}}}}
])

0 个答案:

没有答案