gpt4 book ai didi

Python:uMongo 排序

转载 作者:行者123 更新时间:2023-11-30 22:25:42 25 4
gpt4 key购买 nike

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

class Job(Document):
priority = IntField()

我正在使用:

jobs = Job.find()

要从 mongo 实例获取所有作业,我正在尝试按优先级对它们进行排序..但不幸的是,我似乎找不到执行此操作的方法。我搜索过docs &谷歌搜索它,尝试了很多东西,比如

jobs = Job.find().sort('priority', 1)
jobs = Job.find().order_by('priority')

以及我发现的许多其他与 pymongo 相关的解决方案,但它们不适用于 uMongo。

但仍然卡住了..任何帮助将不胜感激!

谢谢!

最佳答案

我之前没有使用过 umongo,但经过检查,我发现 find() 方法实际上返回一个 umongo.frameworks.pymongo.WrappedCursor 实例。并调查the code在我看来,这只是一个 pymongo.cursor,其中包含一些好东西。于是,我做了下面的实验,结果成功了。请告诉我这是否有帮助。

1.> 我创建了一个名为 marketing 的集合(为什么用这个名字?我不知道:))它看起来像以下 marketing collection

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% 确定这是否符合您的情况。但从问题来看,似乎是这样。

关于Python:uMongo 排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47460112/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com