Python& MongoDB - 按降序存储数据

时间:2017-03-25 17:06:03

标签: python mongodb sorting

我正在使用MongoDB和Python。我使用以下命令插入我的文档:

name

agedb.test.find().sort("Age", 1) 是我的代码中的变量)

我使用以下命令从最年长到最年轻的排序:

db.test.save()

我知道我只是在代码中发出一个find命令。有没有一种聪明的方法可以使用$push方法对文档进行排序并使用已排序的文档覆盖原始文档?

我研究了许多有些解决这个问题的问题,例如: How to store sorted array back to MongoDB?

但是为了在update_one内执行$sort命令并使用In [7]: df["a"].str.split().str.len().sum() Out[7]: 6 功能,我必须重新处理我的整个代码。我有什么选择?我是否需要重新编写代码,还是有其他方法?

1 个答案:

答案 0 :(得分:2)

您正在混合mongo中的两个概念:对文档中嵌入的数组进行排序,并通过某些属性对集合中的文档进行排序。

您链接的帖子指的是前者。您似乎试图永久地对集合中的文档进行排序。

Mongo按照大致写入的顺序存储文档。与大多数数据库一样,它使用索引来提高检索数据的效率。

在您描述的实例中,您将在文档的age属性上创建索引。

使用ensure_index或create_index函数:

db.test.ensure_index("Age", pymongo.DESCENDING)

从此以后,每个查询都像

db.test.find().sort("Age", -1)

使用索引并且速度非常快。

我想您可以尝试将文档重写为已排序的偏好中的另一个集合,然后查看简单的提取是否总是按年龄顺序返回。但这并不是考虑mongo的正确方法。