Python 按集合中的订单号检索mongodb文档

Python 按集合中的订单号检索mongodb文档,python,python-3.x,mongodb,pymongo,mongoengine,Python,Python 3.x,Mongodb,Pymongo,Mongoengine,我有一个mongodb集合,看起来像这样 [ { "Code": "018906", "X": "0.12", }, { "Code": "018907", "X": "0.18", }, { "Code": "018910", "X": "0.24", }, { "Code": "018916", "X": "0.75", }, ] 假设我想检索第三个文档的code字段。我想使用类似这样的pyth

我有一个mongodb集合,看起来像这样

[
  {
    "Code": "018906",
    "X": "0.12",
  },
  {
    "Code": "018907",
    "X": "0.18",
  },
  {
    "Code": "018910",
    "X": "0.24",
  },
  {
    "Code": "018916",
    "X": "0.75",
  },
]
假设我想检索第三个文档的
code
字段。我想使用类似这样的python函数
按顺序检索(order\u no=3,field='code')
,它将返回
“018910”
<代码>订单号指向集合中的文档位置

code
按升序排列

我愿意使用任何python mongodb库。欢迎使用pymongo、orm等mongoengine解决方案


我使用的是python 3.7、mongodb v4.2,假设存储的数据顺序正确,使用pymongo的惰性解决方案如下:

从pymongo导入MongoClient
client=MongoClient()
db=client.database
coll=db.coll
def按订单检索(订单号,field=“Code”):
对于i,在enumerate(coll.find())中发布:
如果i+1==订单号:
返回岗位[现场]
更快的解决方案是让记录保存一个“order\u no”字段,您可以直接查询它

例如:

coll.find_one({“order_no”:order_no})
您可以将订单号设置为递增索引,可使用以下代码进行设置:

result=db.collection.create_index([('order_no',pymongo.ASCENDING)],unique=True)

假设存储的数据顺序正确,使用pymongo的惰性解决方案如下:

从pymongo导入MongoClient
client=MongoClient()
db=client.database
coll=db.coll
def按订单检索(订单号,field=“Code”):
对于i,在enumerate(coll.find())中发布:
如果i+1==订单号:
返回岗位[现场]
更快的解决方案是让记录保存一个“order\u no”字段,您可以直接查询它

例如:

coll.find_one({“order_no”:order_no})
您可以将订单号设置为递增索引,可使用以下代码进行设置:

result=db.collection.create_index([('order_no',pymongo.ASCENDING)],unique=True)

谢谢您的回答。测试工作,虽然有点慢。我想你的建议是使用订单号作为递增索引,这对于可接受的速度是必要的。谢谢你的回答。测试工作,虽然有点慢。我想你的建议是使用订单号作为递增索引,这对于可接受的速度是必要的。