如何为Twitter文章聚合器设计MongoDB模式
我是MongoDB的新手,作为练习,我正在构建一个从推文中提取链接的应用程序。这样做的目的是为一个主题获取最多的推特文章。我很难为这个应用程序设计模式如何为Twitter文章聚合器设计MongoDB模式,mongodb,schema,Mongodb,Schema,我是MongoDB的新手,作为练习,我正在构建一个从推文中提取链接的应用程序。这样做的目的是为一个主题获取最多的推特文章。我很难为这个应用程序设计模式 应用程序将捕获tweet并保存它们 tweet被解析为链接 链接与其他信息(标题、摘录等)一起保存 tweet可以包含多个链接 一个链接可以有很多tweet 我如何: 是否保存这些集合、嵌入的文档 按推文数量排列前十名链接 获取特定日期推文最多的链接 获取链接的推文 获取最新的十条推文 我很想得到一些关于这方面的信息。两个一般提示: 1)
- 应用程序将捕获tweet并保存它们
- tweet被解析为链接
- 链接与其他信息(标题、摘录等)一起保存
- tweet可以包含多个链接
- 一个链接可以有很多tweet
- 是否保存这些集合、嵌入的文档
- 按推文数量排列前十名链接
- 获取特定日期推文最多的链接
- 获取链接的推文
- 获取最新的十条推文
db.x.tweets.insert({...}) //simply insert new document with all fields
//for each found link:
var upsert = true;
var toFind = { url: '...'};
var updateObj = {'$inc': {'totalCount': 1, 'daycounts.12342342': 1 } }; //12342342 is the day of the tweet
db.x.links.update(toFind, updateObj, upsert);
按推文数量排列前十名链接
db.x.links.find().sort({'totalCount:-1'}).limit(10);
获取特定日期推文最多的链接
db.x.links.find({'$gt':{'daycount.123413453':0}}).sort({'daycount.123413453':-1}).limit(1); //123413453 is the day you're after
获取链接的推文
db.x.tweets.find({'links': 'http://lin.k'});
获取最新的十条推文
db.x.tweets.find().sort({'timeTweeted': -1}, -1).limit(10);
当你习惯了这一点,很难不正常化。你的例子真的很有帮助,非常感谢!:)
db.x.tweets.find().sort({'timeTweeted': -1}, -1).limit(10);