Python:uMongo排序
我正在使用Python 3.0 我有这个模型:Python:uMongo排序,python,mongodb,sorting,umongo,Python,Mongodb,Sorting,Umongo,我正在使用Python 3.0 我有这个模型: class Job(Document): priority = IntField() 我正在使用: jobs = Job.find() 要从mongo实例获取所有作业,我正在尝试按优先级对它们进行排序。。但不幸的是,我似乎找不到这样做的方法。我已经搜索过了&谷歌搜索过了,尝试过很多类似的东西 jobs = Job.find().sort('priority', 1) jobs = Job.find().order_by('priorit
class Job(Document):
priority = IntField()
我正在使用:
jobs = Job.find()
要从mongo实例获取所有作业,我正在尝试按优先级对它们进行排序。。但不幸的是,我似乎找不到这样做的方法。我已经搜索过了&谷歌搜索过了,尝试过很多类似的东西
jobs = Job.find().sort('priority', 1)
jobs = Job.find().order_by('priority')
我还发现了很多其他与pymongo相关的解决方案,而pymongo不适用于uMongo
但还是卡住了。。任何帮助都将不胜感激
谢谢 我以前没有使用过umongo,但是经过检查,我发现find方法实际上返回了一个umongo.frameworks.pymongo.WrappedCursor实例。在我看来,这只是一个pymongo.cursor,包含了一些好东西。所以,我做了下面的实验,它成功了。请让我知道这是否有帮助
1.>我创建了一个名为marketing的集合,为什么取这个名字?我不知道:看起来是这样的
2.>如您所见,它不是按照优先级字段排序的
3.>然后我编写了以下代码
In [1]: from datetime import datetime
In [2]: from pymongo import MongoClient
In [3]: from umongo import Instance, Document, fields, validate
In [4]: db = MongoClient().test_db
In [5]: instance = Instance(db)
In [6]: @instance.register
...: class Marketing(Document):
...: priority = fields.IntField()
...: class Meta:
...: collection = db.marketing
4.>然后我尝试了正常的for循环,没有进行排序
In [8]: for doc in Marketing.find():
...: print(doc)
...:
<object Document __main__.Marketing({'id': ObjectId('5a1bf2acc24bf00f20acb2a2'), 'priority': 1})>
<object Document __main__.Marketing({'id': ObjectId('5a1bf2d1c24bf00f20acb2af'), 'priority': 3})>
<object Document __main__.Marketing({'id': ObjectId('5a1bf2e0c24bf00f20acb2b8'), 'priority': 2})>
<object Document __main__.Marketing({'id': ObjectId('5a1bf2eec24bf00f20acb2ba'), 'priority': 5})>
<object Document __main__.Marketing({'id': ObjectId('5a1bf2f4c24bf00f20acb2bc'), 'priority': 4})>
5.>当然,文件返回的顺序与它们在集合中的顺序相同
6.>最后,我更改了for循环以对文档进行排序
In [9]: import pymongo
In [11]: for doc in Marketing.find().sort([("priority", pymongo.ASCENDING)]):
...: print(doc)
...:
...:
<object Document __main__.Marketing({'id': ObjectId('5a1bf2acc24bf00f20acb2a2'), 'priority': 1})>
<object Document __main__.Marketing({'id': ObjectId('5a1bf2e0c24bf00f20acb2b8'), 'priority': 2})>
<object Document __main__.Marketing({'id': ObjectId('5a1bf2d1c24bf00f20acb2af'), 'priority': 3})>
<object Document __main__.Marketing({'id': ObjectId('5a1bf2f4c24bf00f20acb2bc'), 'priority': 4})>
<object Document __main__.Marketing({'id': ObjectId('5a1bf2eec24bf00f20acb2ba'), 'priority': 5})>
7.>如您所见,它们是按排序顺序返回的
我不能100%确定这是否符合你的情况。但是从问题来看,它看起来像。我以前没有使用过umongo,但是经过检查,我发现find方法实际上返回了一个umongo.frameworks.pymongo.WrappedCursor实例。在我看来,这只是一个pymongo.cursor,包含了一些好东西。所以,我做了下面的实验,它成功了。请让我知道这是否有帮助
1.>我创建了一个名为marketing的集合,为什么取这个名字?我不知道:看起来是这样的
2.>如您所见,它不是按照优先级字段排序的
3.>然后我编写了以下代码
In [1]: from datetime import datetime
In [2]: from pymongo import MongoClient
In [3]: from umongo import Instance, Document, fields, validate
In [4]: db = MongoClient().test_db
In [5]: instance = Instance(db)
In [6]: @instance.register
...: class Marketing(Document):
...: priority = fields.IntField()
...: class Meta:
...: collection = db.marketing
4.>然后我尝试了正常的for循环,没有进行排序
In [8]: for doc in Marketing.find():
...: print(doc)
...:
<object Document __main__.Marketing({'id': ObjectId('5a1bf2acc24bf00f20acb2a2'), 'priority': 1})>
<object Document __main__.Marketing({'id': ObjectId('5a1bf2d1c24bf00f20acb2af'), 'priority': 3})>
<object Document __main__.Marketing({'id': ObjectId('5a1bf2e0c24bf00f20acb2b8'), 'priority': 2})>
<object Document __main__.Marketing({'id': ObjectId('5a1bf2eec24bf00f20acb2ba'), 'priority': 5})>
<object Document __main__.Marketing({'id': ObjectId('5a1bf2f4c24bf00f20acb2bc'), 'priority': 4})>
5.>当然,文件返回的顺序与它们在集合中的顺序相同
6.>最后,我更改了for循环以对文档进行排序
In [9]: import pymongo
In [11]: for doc in Marketing.find().sort([("priority", pymongo.ASCENDING)]):
...: print(doc)
...:
...:
<object Document __main__.Marketing({'id': ObjectId('5a1bf2acc24bf00f20acb2a2'), 'priority': 1})>
<object Document __main__.Marketing({'id': ObjectId('5a1bf2e0c24bf00f20acb2b8'), 'priority': 2})>
<object Document __main__.Marketing({'id': ObjectId('5a1bf2d1c24bf00f20acb2af'), 'priority': 3})>
<object Document __main__.Marketing({'id': ObjectId('5a1bf2f4c24bf00f20acb2bc'), 'priority': 4})>
<object Document __main__.Marketing({'id': ObjectId('5a1bf2eec24bf00f20acb2ba'), 'priority': 5})>
7.>如您所见,它们是按排序顺序返回的
我不能100%确定这是否符合你的情况。但是从问题来看,它看起来像。看起来这应该可以完成任务看起来这应该可以完成任务