Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:uMongo排序_Python_Mongodb_Sorting_Umongo - Fatal编程技术网

Python:uMongo排序

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

我正在使用Python 3.0 我有这个模型:

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%确定这是否符合你的情况。但是从问题来看,它看起来像。

看起来这应该可以完成任务看起来这应该可以完成任务