按集合中的订单号检索 mongodb 文档
Retrieve mongodb document by order number in collection
我有一个 mongodb 集合,看起来像这样;
[
{
"Code": "018906",
"X": "0.12",
},
{
"Code": "018907",
"X": "0.18",
},
{
"Code": "018910",
"X": "0.24",
},
{
"Code": "018916",
"X": "0.75",
},
]
假设我想检索第 3 个文档的 Code
字段。我想使用像这样的 python 函数 retrieve_by_order(order_no=3, field='Code')
它将 return "018910"
。 order_no
指向文档在集合中的位置。
Code
按升序排列。
我愿意使用任何 python mongodb 库。欢迎使用 pymongo、orm 之类的 mongoengine 解决方案。
我正在使用 python 3.7,mongodb v4.2
假设存储数据的顺序是正确的,使用 pymongo 的惰性解决方案类似于:
from pymongo import MongoClient
client = MongoClient(<creds>)
db = client.database
coll = db.coll
def retrieve_by_order(order_no, field="Code"):
for i, post in enumerate(coll.find()):
if i + 1 == order_no:
return post[field]
更快一点的解决方案是让记录包含一个 "order_no" 字段,您可以直接查询它。
示例:
coll.find_one({"order_no": order_no})
您可以将order_no设置为递增索引,可以使用以下代码设置:
result = db.collection.create_index([('order_no', pymongo.ASCENDING)], unique=True)
我有一个 mongodb 集合,看起来像这样;
[
{
"Code": "018906",
"X": "0.12",
},
{
"Code": "018907",
"X": "0.18",
},
{
"Code": "018910",
"X": "0.24",
},
{
"Code": "018916",
"X": "0.75",
},
]
假设我想检索第 3 个文档的 Code
字段。我想使用像这样的 python 函数 retrieve_by_order(order_no=3, field='Code')
它将 return "018910"
。 order_no
指向文档在集合中的位置。
Code
按升序排列。
我愿意使用任何 python mongodb 库。欢迎使用 pymongo、orm 之类的 mongoengine 解决方案。
我正在使用 python 3.7,mongodb v4.2
假设存储数据的顺序是正确的,使用 pymongo 的惰性解决方案类似于:
from pymongo import MongoClient
client = MongoClient(<creds>)
db = client.database
coll = db.coll
def retrieve_by_order(order_no, field="Code"):
for i, post in enumerate(coll.find()):
if i + 1 == order_no:
return post[field]
更快一点的解决方案是让记录包含一个 "order_no" 字段,您可以直接查询它。
示例:
coll.find_one({"order_no": order_no})
您可以将order_no设置为递增索引,可以使用以下代码设置:
result = db.collection.create_index([('order_no', pymongo.ASCENDING)], unique=True)