我有推文列表,其中包含三个字段,tweet id,topicIdTag和type。 type有三个不同的值。我得到了结果,但我想进一步计算每种类型。我的模型和查询代码如下。
model : {
TopicIdTag : String,
TweetId : String,
type :String //Positive,negative,neutral
},
db.collection("myTweets").aggregate( [
{
$group: {
_id: {
TopicIdTag : "$TopicIdTag",
TweetId : "$TweetId",
},
count: { $sum: 1 }
}
},
{ $match: { count: { $gt: 0 , $lt : 5 } } },
// Then sort
{ "$sort": { "count": -1 } }
], (err, result) => {
if (err) {
console.log(err);
}
res.status(200).send(result);
} );
});
此查询根据ID给出总推文组数。查询还应返回特定推文ID中的正数,负数和中性的时间类型。
答案 0 :(得分:0)
您可以更新现有的.Build()
以包含$group
并按type
计算,并添加另一个组type
,以便为每个$addtoSet
添加一个条目, type
count
总计数和TopicIdTag
& TweetId
。
db.collection("tweets").aggregate([{
$group: {
_id: {
Time: "$Time",
TopicIdTag: "$TopicIdTag",
TweetId: "$TweetId",
TweetText: "$TweetText",
UserName: "$UserName",
UserScreenname: "$UserScreenname",
sentimentNumber: "$sentimentNumber",
setimentText: "$setimentText",
//user feed back type
type: "$type"
},
count: {
$sum: 1
}
}
}, {
$group: {
_id: {
Time: "$_id.Time",
TopicIdTag: "$_id.TopicIdTag",
TweetId: "$_id.TweetId",
TweetText: "$_id.TweetText",
UserName: "$_id.UserName",
UserScreenname: "$_id.UserScreenname",
sentimentNumber: "$_id.sentimentNumber",
setimentText: "$_id.setimentText"
},
typeAndCount: {
$addToSet: {
type: "$_id.type",
count: "$count"
}
},
totalCount: {
$sum: 1
}
}
}, {
$match: {
totalCount: {
$gt: 0,
$lt: 5
}
}
}])