使用PyMongo改组Mongodb文档

时间:2017-05-15 09:45:17

标签: python mongodb pymongo

我正在寻找一种以随机顺序对Mongodb文档进行排序的方法。

我在PyMongo的API或StackOverflow上找不到任何解决方案。

基于列表的解决方案或任何其他消耗内存的解决方案无关紧要,因为我正在使用大量的dbs。

2 个答案:

答案 0 :(得分:1)

MongoDB没有“随机排序”功能。如果您没有足够的文档来容纳RAM,您可以将它们全部提取到列表中并使用Python标准库random.shuffle

import random
import pymongo

collection = pymongo.MongoClient().db.collection
docs = random.shuffle(list(collection.find()))

答案 1 :(得分:0)

根据最终结果,您可能会尝试$sample 聚合运算符将完成这项工作。

cursor = your_collection.aggregate([{'$sample': {'size': your_collection.count()}}], allowDiskUse=True)

这将为您提供一个可以迭代的随机聚合光标

for document in cursor:
     print (document)
  • 有关确切行为,请阅读documentation
  • 另一个(复杂的)替代方案可以是map / reduce作业,您可以在文档的其余部分发出随机数,然后按此排序。