NoSQL重复计数和删除

时间:2014-07-21 19:43:54

标签: mongodb mongodb-query aggregation-framework nosql

我从一个音乐活动中收集了大约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
}

2 个答案:

答案 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')

你将获得所有带有不同文本的推文:)