使用Twitter Stream API检索推文时,每条推文都会与其
一起下载created_at
字段,格式为String
字段,例如
Mon Sep 01 00:00:00 +0000 2014
我将这些推文存储在MongoDB数据库中。现在我想根据日期订购推文,但如果我要求MongoDB根据created_at
字段对其进行排序,这是一个字符串:
db.collection.find({},{created_at:1}).sort({created_at:1})
日期将根据他们的字典顺序排序,这不是我想要的。
如何修改查询以便根据日期而不是字符串对它们进行排序?我尝试使用ISODate
个对象,但由于该字段是字符串,因此不起作用。
感谢。
答案 0 :(得分:1)
使用MapReduce:
db.rawTweets.mapReduce(
// map
function() {
emit(
// "Thu Jul 17 03:21:42 +0000 2014"
new Date(Date.parse(this.created_at.replace(/(\+\S+) (.*)/, '$2 $1'))).toLocaleDateString(),
1
);
},
// reduce
function(key, values) {
return Array.sum(values)
},
{
query: {},
out: "rawTweetsCount"
}
)