我在mongodb中有一个很酷的选择:
{
"_id" : ObjectId("5490a00879dc6a138dcefb0f"),
"Date" : 20141012,
"Type" : "Twitter",
"Entities" : [
{
"ID" : 2,
"Name" : "test1",
"Sentiment" : {
"Value" : 0.1,
"Neutral" : 12
}
}
]
}
我有几个。现在我想按日期进行分组,然后在每个日期对Sentiment中的值进行返回求和后,按照这样的方式对其进行分组:
DBCollection collectionG;
collectionG = db.getCollection("GraphDataCollection");
DBObject groupFields = new BasicDBObject( "_id", "$Date");
groupFields.put("Sentiment.value", new BasicDBObject( "$sum", 1));
DBObject groupBy = new BasicDBObject("$group", groupFields );
AggregationOutput output = collectionG.aggregate(where, groupBy);
现在我的问题是sentiment.Value的总和不返回,只返回每个组中聚合的集合数。任何人都可以帮助我如何获得情绪中的价值总和吗?
更新
我替换了这一行:
groupFields.put("Sentiment.value", new BasicDBObject( "$sum", 1));
用这个:
groupFields.put("value", new BasicDBObject( "$sum", "$Entities.Sentiment.Value"));
现在我只获得0,尽管有很多非0值的情绪!!!
任何人都可以帮助我吗?
答案 0 :(得分:1)
试试这个mongo查询
db.test.aggregate(
[
{
$unwind : '$Entities'
},
{
$group:
{
_id: {'Date' : '$Date'},
sum: { $sum: '$Entities.Sentiment.Value' }
}
}
]
)
答案 1 :(得分:0)
我认为它有问题,因为实体是一个数组。所以它不理解你想要$sum
值的方式。您是否希望它总结每个实体的所有情绪值,然后在与日期匹配的所有文档中总结这些总和?