我有一个像MongoDB中保存的文档列表:
{
"_id" : "f9f44e87-4260-4699-99a6-af6b58b4fb7e",
"address" : {},
"lastUpdate" : "1414083484838",
"listvalues" : {},
"userModels" : {
"5067" : {
"generated_date_timestamp" : NumberLong(1413985161866),
"model_id" : 5067,
"score_id" : {
"0" : {
"score_level_id" : 5267,
"confidence" : 0,
"generated_timestamp" : NumberLong(1413985161866)
}
},
"points" : 0,
"delta_points" : 0,
"override_model" : 0,
"override_score" : 0,
},
"5079" : {
"generated_date_timestamp" : NumberLong(1413985161866),
"model_id" : 5079,
"score_id" : {
"0" : {
"score_level_id" : 5292,
"confidence" : 0,
"generated_timestamp" : NumberLong(1413985161866)
}
},
"points" : 0,
"delta_points" : 0,
"override_model" : 0,
"override_score" : 0,
},
"5080" : {
"_class" : "com.mediresource.datatype.model.bean.Model",
"generated_date_timestamp" : NumberLong(1413985161866),
"model_id" : 5080,
"score_id" : {
"0" : {
"score_level_id" : 5294,
"confidence" : 0,
"generated_timestamp" : NumberLong(1413985161866)
}
},
"points" : 100,
"delta_points" : 0,
"override_model" : 0,
"override_score" : 0,
}
}
}
我需要计算mongoDB中所有_id有多少&#34; userModels&#34;,有多少0点。我在这里保存的是一个定义为UserModels<Integer, Model>
的Java HashMap。
这是我尝试使用的查询,但没有成功:
db.anonProfile.find(
{ "userModels": { $elemMatch: { "points": { $gte: 0 } } } }
).size();
有任何线索吗?
答案 0 :(得分:1)
您可以将其与spring-data mongodb
一起使用,如:
Criteria criteria=Criteria.where("userModels.points").gte(0));
Aggregration aggregration=newAggregration(unwind("userModels"),match(criteria),group("_id").count().as("param"));
但我无法理解为什么你使用userModels
下的数字。这不好。因为我没有使用numbers
下的userModels
。