我在分组时无法获得特定属性的总和
I can not get the sum of specific attribute while I do group by
我有一个收藏如下 mongodb:
{
"_id" : ObjectId("5490a00879dc6a138dcefb0f"),
"Date" : 20141012,
"Type" : "Twitter",
"Entities" : [
{
"ID" : 2,
"Name" : "test1",
"Sentiment" : {
"Value" : 0.1,
"Neutral" : 12
}
}
]
}
我有几个。现在我想按日期分组,然后在 return 对每个日期分组的 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 的总和不是 return,只是 collections 在每个组中聚合的计数是 returned。任何人都可以帮助我如何获得情绪值的总和吗?
更新:
我替换了这一行:
groupFields.put("Sentiment.value", new BasicDBObject( "$sum", 1));
用这个:
groupFields.put("value", new BasicDBObject( "$sum", "$Entities.Sentiment.Value"));
现在我只得到 0,尽管情绪有很多非 0 值!!!
谁能帮帮我?
我认为它有问题,因为 Entities 是一个数组。所以它不明白你想如何 $sum
提高价值。您是否希望它对每个实体的所有情感值求和,然后在与日期匹配的所有文档中对这些总和求和?
试试这个 mongo 查询
db.test.aggregate(
[
{
$unwind : '$Entities'
},
{
$group:
{
_id: {'Date' : '$Date'},
sum: { $sum: '$Entities.Sentiment.Value' }
}
}
]
)
我有一个收藏如下 mongodb:
{
"_id" : ObjectId("5490a00879dc6a138dcefb0f"),
"Date" : 20141012,
"Type" : "Twitter",
"Entities" : [
{
"ID" : 2,
"Name" : "test1",
"Sentiment" : {
"Value" : 0.1,
"Neutral" : 12
}
}
]
}
我有几个。现在我想按日期分组,然后在 return 对每个日期分组的 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 的总和不是 return,只是 collections 在每个组中聚合的计数是 returned。任何人都可以帮助我如何获得情绪值的总和吗?
更新:
我替换了这一行:
groupFields.put("Sentiment.value", new BasicDBObject( "$sum", 1));
用这个:
groupFields.put("value", new BasicDBObject( "$sum", "$Entities.Sentiment.Value"));
现在我只得到 0,尽管情绪有很多非 0 值!!!
谁能帮帮我?
我认为它有问题,因为 Entities 是一个数组。所以它不明白你想如何 $sum
提高价值。您是否希望它对每个实体的所有情感值求和,然后在与日期匹配的所有文档中对这些总和求和?
试试这个 mongo 查询
db.test.aggregate(
[
{
$unwind : '$Entities'
},
{
$group:
{
_id: {'Date' : '$Date'},
sum: { $sum: '$Entities.Sentiment.Value' }
}
}
]
)