【发布时间】:2018-01-06 20:05:50
【问题描述】:
大家好,新年快乐。
这个问题是因为我有一个问题,我不知道要寻找什么作为解决方案。我认为聚合在这里不好。
我是一个新手级别的程序员,从 python 3.6 和 pymongo 3.4 开始处理 Mongodb。
我在具有这种结构的“仓库”数据库中的“lostItems”集合中有 50M 文档:
{
"_id": "5a4d018526f9c63894d11254",
"time": "2000-01-03T00:02:00.000Z",
"item": "sunglasses"
"level": 45,
"section": 15,
"box": 29,
"home": "CA"
}
“_id”字段是正常的自动生成键。 “时间”不是键,也没有强制要求是唯一的,但目前恰好是这样。
让我们看看我是否能清楚地解释我想要的查询:
它将按“时间”排序文档(“时间”,pymongo.DESCENDING)
它将查找并以某种方式记下每个 "home": "CA" 以用于第二个查询。
对于每个 '"home": "CA"' 命中,它将返回,不仅是该文档,而且还包括按指定顺序的前 5 个文档(无论 "home" 值可能是什么)和后面的文档10 个文件。
换句话说,对于找到的每个 '"home": "CA"',查询将返回总共 16 个文档,这些文档按“时间”排序时是连续的。
我的方法(作为新手)是查询命中并将它们写在时间数据库中,然后进行另一个查询以获取并添加所需的先前和以后的文档。这感觉有点复杂,而且查询速度很慢。
import pymongo
col = pymongo.MongoClient('localhost', 27017).warehouse.lostItems
query = {"home": "CA"}
order = [ ("time", pymongo.DESCENDING) ]
try:
for doc in col.find(query).sort(order):
**"Now I don't know what to do"**
except Exception as e:
print ("Error :", type(e), e)
您能否给我一些建议和/或告诉我这种查询叫什么,以便我可以寻找更多类似的案例来了解?
提前非常感谢您。
【问题讨论】:
标签: pymongo-3.x