python - 按时间戳对 mongodb 文档进行排序(按降序排列)

标签 python mongodb timestamp

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

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

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

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

明确一点:时间戳并不表示文档的创建时间,它存储为字符串(例如“1404217646”)。

提前致谢。

最佳答案

假设您的时间戳指示文档的创建时间,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)

关于python - 按时间戳对 mongodb 文档进行排序(按降序排列),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24501756/

相关文章:

node.js - 为什么按时间范围查询mongoDB不起作用?

ruby - 如何在 Ruby 中获取 UTC 时间戳?

python - 使用具有 > 2 个参数的用户定义函数的 matplotlib 绘制 3d 曲面

python - 面板 + 参数 : FileInput widget and @param. 取决于交互

python - 当我希望它继续时,我的嵌套 if 语句似乎正在结束我的 for 循环

node.js - 在 Node.js 中将二进制数据读/写到 MongoDB

javascript - 如何在 app.locals 函数中使用带有express的 Node 返回值

oracle - Groovy-分钟的时间戳

python - Linux 脚本创建目录结构

c# - 使用 docker-compose 使用 dotnet 核心的 MongoDB 连接超时