按时间戳排序mongodb文档(按顺序排序)

时间:2014-07-01 02:41:16

标签: python mongodb timestamp

我在mongodb中有一堆文件,并且都有一个时间戳字段,时间戳记存储为“1404008160”。我想按照desc顺序对这个集合中的所有文档进行排序。我是这样做的:

sort = [('timestamp', DESCENDING)]
collection.find(limit=10).sort(sort)

但是,我没有按顺序按时间戳排序结果。我在想它是因为时间戳被视为一个int字段。是否有解决此问题而不更改时间戳字段的数据类型。我已经在这个集合中有很多数据,所以不想经历导入/导出等麻烦。

另外 - 我想保留用于排序的负载到mongodb,而不是在python中以编程方式进行。

要明确:时间戳不表示文档何时创建并且以字符串形式存储(例如“1404217646”)。

提前致谢。

2 个答案:

答案 0 :(得分:18)

假设您的时间戳指示文档的创建时间you can use _id instead

_id mongo中的ObjectId存储您的时间戳。请尝试以下方法:

sort = {'_id': -1}
collection.find({}, limit=10).sort(sort)

如果您仍想按自定义timestamp字段排序,则以下内容应该有效:

sort = {'timestamp': -1}
collection.find({}, limit=10).sort(sort)

请注意,这是假设您的所有timestamp字段属于同一类型(stringint

答案 1 :(得分:5)

您可以使用sort( { 'timestamp': -1 } )按降序对收藏品进行排序。您的查询将是这样的

collection.find().sort( { 'timestamp': -1 } ).limit(10)

如果您具备SQL知识,可以在以下链接中比较两个查询

http://docs.mongodb.org/manual/reference/sql-comparison/