我正在寻找一种以随机顺序对Mongodb文档进行排序的方法。
我在PyMongo的API或StackOverflow上找不到任何解决方案。
基于列表的解决方案或任何其他消耗内存的解决方案无关紧要,因为我正在使用大量的dbs。
答案 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)