【问题标题】:Pymongo select value on multiple collections where condition, and group by datePymongo 在多个集合上选择值条件,并按日期分组
【发布时间】:2019-02-24 02:19:04
【问题描述】:

我是 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, 
}
...
...

乙:

{
   "_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, 
}
...
...

例如:

如果我搜索 date == 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
 }
]

由于我是新手,我将不胜感激。 感谢您的理解。

【问题讨论】:

    标签: python mongodb pymongo


    【解决方案1】:

    你可以分别做两个简单的查询:

    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/

    【讨论】:

      猜你喜欢
      • 2020-12-19
      • 2014-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-02
      相关资源
      最近更新 更多