使用MapReduce时,每个结果文档“结果”的结构如下:
{ '_id' : 123, 'value' :{'sum_donations' 999, 'nbr_visitors':50 }
我可以使用:
访问_id和value字段db.result.find() OR db.result.find({},{_id:1, value:1})
有没有办法选择 _ id 和 sum_donations 而不选择 nbr_visitors ?像这样:
{'id': 123, 'sum_donation': 999}
或者我应该创建另一个为我返回的MapReduce函数? 我正在考虑使用一个MapReduce集合并操纵它来回答不同的问题 我试过了
db.result.find({},{_id:1, value.sum_donations:1}) but it didn't work.
答案 0 :(得分:1)
这样做有两个问题:
value
字段目前无法从MR本身操作,有一个JIRA,但它并不完全在“列表”上:https://jira.mongodb.org/browse/SERVER-2517 你可以(如果你使用MongoDB 2.2)在这里使用聚合框架和$project
运算符,但我相信这会超级杀死并且会降低你的系统和程序的速度。
因此,执行此操作的最佳方法是扩展您的编程以从该子文档中获取字段。这可能是执行此操作的最高效,最直接,最简单的方法,只需简单地编写代码即可。