我从一个音乐活动中收集了大约10k的推文。你可以想象有很多转发。为了做正确的分析,我想计算每个retwet,然后删除转推或删除重复。我找不到在NoSQL中如何做到这一点的方法,所以在这里寻求帮助和建议。使用MongoDB和Robomongo GUI客户端。
重复项是指具有相同文本字段的条目
收藏品包含以下类型的结构:
{
"_id" : ObjectId("53cd28ea51f4fbe9f6e04798"),
"name" : "Positivus Festival",
"screenName" : "positivus",
"text" : "RT @Valsts_policija: Tuvojas @positivus , tādēļ esam sagatavojuši septiņus drošības ieteikumus patīkamai atpūtai #Positivus110 http://t.co/…",
"time" : 1405606042.803368
}
答案 0 :(得分:2)
我使用MongoDB聚合框架:http://docs.mongodb.org/manual/aggregation/
在这种情况下,我相信以下代码将打印出所有重复的推文及其总数:
db.collectionname.aggregate([
{$group : { _id: "$text" , count : { $sum: 1}}},
{$match : { count : { $gt : 1 } }} ])
你应该看到这样的结果:
{
"_id" : "RT @Valsts_policija: Tuvojas @positivus , tādēļ esam sagatavojuši septiņus drošības ieteikumus patīkamai atpūtai #Positivus110 http://t.co/…",
"count" : 2
}
假设有2条推文带有相同的文字。
答案 1 :(得分:0)
特别是在mongoDB中,只是为了获取特定字段的所有唯一值("在你的案例中推文TEXT")。
尝试命令
db.collection.distinct('text')
你将获得所有带有不同文本的推文:)