使用PyMong洗牌Mongodb文档

2024-06-01 20:43:09 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

基于列表的解决方案或任何其他的内存消耗解决方案都无关紧要,因为我使用的是海量数据库。在


Tags: 方法内存文档api数据库列表排序顺序
2条回答

根据最终结果,您可能正在尝试实现$sample 聚合运算符将完成此工作。在

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

这将给你一个随机的聚集光标,你可以迭代

^{pr2}$
  • 要了解确切的行为,请阅读documentation
  • 另一个(复杂的)替代方法是map/reduce作业,您可以在文档的其余部分发出一个随机数,然后按此排序。在

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

import random
import pymongo

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

相关问题 更多 >