我是 mongodb 新手,我使用 pymongo 工作
有没有办法在多个集合中选择特定日期与查询参数匹配的特定字段,并按日期对记录进行分组?
演示:
我有 2 个集合 A、B
答:
{
"_id" : ObjectId("7d663451d1e7242c4b68ekjd"),
"date" : "Mon Dec 27 2010 18:51:00 GMT+0000 (UTC)",
"value" : 1,
}
{
"_id" : ObjectId("qd663451d1e7242c4b68e001"),
"date" : "Mon Dec 27 2010 18:52:00 GMT+0000 (UTC)",
"value" : 2,
}
...
...
B:
{
"_id" : ObjectId("td663451d1e7242c4b68eiu6"),
"date" : "Mon Dec 27 2010 18:51:00 GMT+0000 (UTC)",
"prediction_value" : 3,
}
{
"_id" : ObjectId("4d663451d1e7242c4b68e004"),
"date" : "Mon Dec 27 2010 18:52:00 GMT+0000 (UTC)",
"prediction_value" : 4,
}
...
...
例如:
如果我搜索日期 == Mon Dec 27 2010 18:52:00 GMT+0000 (UTC)
我需要在此日期之前获取 A.value 和 B.prediction_value 并对记录进行分组
结果如下:
"Mon Dec 27 2010 18:52:00 GMT+0000": [
{
"A" : 2
},
{
"B" : 4
}
]
由于我是新手,所以我非常感谢一些例子。 感谢您的理解。
最佳答案
您可以分别执行两个简单的查询:
date = 'Mon Dec 27 2010 18:52:00 GMT+0000'
A_doc = db.A.find_one({'date': date})
B_doc = db.B.find_one({'date': date})
A_value = A_doc['value']
B_prediction_value = B_doc['prediction_value']
# manipulate the data as you want
Mongo 不完全支持多集合查询,仅支持左外连接的 $lookup。但我认为在大多数情况下,执行两个简单的查询比执行一个困难的查询更可取。检查此链接以获取更多信息:
Search on multiple collections in MongoDB
MongoDB query multiple collections at once
https://docs.mongodb.com/manual/reference/operator/aggregation/lookup/
关于python - Pymongo在多个集合上选择值条件,并按日期分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54841371/