我是mongo db的新手,
我在mysql中有以下代码:
SELECT sum(Sentiment)/count(*), sum(Intensity)/count(*), count(*) FROM omid.tweet
我需要将其转换为mongodb:
但是我真的很不喜欢分组,例如我有多个列:
// Now the $group operation
DBObject groupFields = new BasicDBObject( "_id", "$?????");
groupFields.put("average", new BasicDBObject( "$avg", "$intensity"));
DBObject group = new BasicDBObject("$group", groupFields);
但是正如您所看到的,我也不知道如何以及如何获得平均情绪。有人可以帮忙吗?
您无需为要实现的目标进行多次分组。您可以使用的$avg
和$sum
聚合运算符aggregation framework
:
db.collection.aggregate(
[
{
$group:
{
_id: null,
avgSentiment: { $avg: "$sentiment" },
avgIntensity: { $avg: "$intensity" },
count: { $sum: 1 }
}
}
]
)
未经测试的Java等效项:
// $group in Java
DBObject groupFields = new BasicDBObject( "_id", null);
groupFields.put("avgSentiment", new BasicDBObject( "$avg", "$sentiment"));
groupFields.put("avgIntensity", new BasicDBObject( "$avg", "$intensity"));
groupFields.put("count", new BasicDBObject( "$sum", 1));
DBObject group = new BasicDBObject("$group", groupFields);
// Run aggregation
List<DBObject> pipeline = Arrays.asList(group);
AggregationOutput output = collection.aggregate(pipeline);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句