我在mongodb中有一堆文档,并且所有文档都有一个时间戳字段,时间戳记存储为“1404008160”。我想按排序顺序对这个集合中的所有文档进行排序。我这样做:按时间戳排序mongodb文档(按降序排列)
sort = [('timestamp', DESCENDING)]
collection.find(limit=10).sort(sort)
但是,我不会按降序顺序按时间戳排序结果。我想这是因为时间戳被视为一个int字段。有没有改变时间戳字段的数据类型的工作。我已经在这个集合中有很多的数据,所以不想经过导入/导出的麻烦等。
另外 - 我想保持排序的负载mongodb,而不是以编程方式在python 。
要清楚:时间戳并不表示何时创建文档并将其存储为字符串(例如“1404217646”)。
在此先感谢。
比较两个查询我假设你已经进口,否则将被表示为'pymongo.DESCENDING'常数。但实际上,这只是'-1'的一个常数,可以让阅读更轻松。作为'int'应该不重要,因为值应该以这种方式排序。这些实际上可能是字符串?意思是,当你查看shell中的数据时,会出现''“''这些引号吗? –
yes - 引号出现 - 因此时间戳存储为字符串..并且我正在寻找解决方法而不更改所有现有文档中此字段的数据类型 – jisu
真的没有解决方法。即使作为字符串,它仍应该正确排序,因为这些值是词法。除非有些是数字,有些则是字符串,这会导致问题。如果您正在寻找一种方式让MongoDB“投射”值,那么除了字符串hackery之外,这不会发生,但这不会有效。你真的需要改变类型。最佳形式是作为BSON日期,它只是在内部存储时间戳值,但会自动在日程表中投射。 –