我有一个集合,它是map_reduce的结果,看起来像这样。
[
{
_id: { id_field1: 'id_field_value1', ... }
value: { value_field1: 'value_field_1' }
},
...
]
现在我想获得_id.field1的不同值 但
collection.distinct('_id.id_field1')
返回一个空列表。
如果我这样做
collection.distinct('value.value_field1')
我得到了预期的结果。 (请指出:MongoDB: How to get distinct list of sub-document field values?)
我有什么理由可以从文档的ID中找出不同的值吗?
编辑: 蒙戈2.5.5 实际文件
db.collection.findOne()
{ _id : { year : 2013, month : 11, date : 2, language : en-US},
value : { sentence_eval : { Num : 36, PerfectMatch : 33} }
}
db.collection.distinct('value.sentence_eval.Num)
[36,...]
db.collection.distinct('_id.language')
[]
答案 0 :(得分:1)
我尝试了与您拥有的相同集合的相同查询,而distinct()确实返回了预期值。请看下面。
顺便说一句,_id.language的值必须用双引号括起来。我希望你输入的是一个错字。
> db.bar.findOne()
{
"_id" : {
"year" : 2013,
"month" : 11,
"date" : 2,
"language" : "en-US"
},
"value" : {
"sentence_eval" : {
"Num" : 36,
"PerfectMatch" : 33
}
}
}
> db.bar.distinct("value.sentence_eval.Num")
[ 36 ]
> db.bar.distinct("value.sentence_eval.PerfectMatch")
[ 33 ]
> db.bar.distinct("_id.year")
[ 2013 ]
> db.bar.distinct("_id.language")
[ "en-US" ]
答案 1 :(得分:0)
mongodb的2.5.5版似乎有这个bug。 我用2.4.9和2.6RC1验证它现在正在按预期工作。所以更新mongodb解决了这个问题。