python - Pymongo在多个集合上选择值条件,并按日期分组

标签 python mongodb pymongo

我是 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/

相关文章:

python - gspread "SpreadsheetNotFound"在某些工作簿上

javascript - Mongoose:查询嵌套对象的错误 ObjectId 时发生 CastError

即使我对字段建立了索引,MongoDB 查询也会超时

python - 如何将两个聚合查询合并为一个

python - 升级到 PyMongo 3.0 导致 ServerSelectionTimeoutError

python - 为什么 db.insert(dict) 在使用 pymongo 时将 _id 键添加到 dict 对象

python - 使用任意键的 JSON 模式验证

python - 在 Python 中移动 Seaborn 图中的图例

python - 每次我重新连接到 MySQL 数据库时,所有表都是空的

java - MongoDb与java : create new connection pool and destroy the previous one