【问题标题】:Create a new aggregate collection from two existing collections?从两个现有集合创建一个新的聚合集合?
【发布时间】:2017-07-30 13:16:26
【问题描述】:

我在两个集合中有一个独特的字段,即“ip”。一个集合包含机器数据,另一个包含地理数据

有没有办法聚合来自两个集合的数据并使用这些数据创建第三个集合?

例如:

geo:

"ip" : "1.1.1.1", "lat" : 1.29, "lon" : 103.86

"ip" : "2.2.2.2", "lat" : 1.29, "lon" : 103.86

machines:

"ip" : "1.1.1.1", "load" : 5

"ip" : "2.2.2.2", "load" : 7

## becomes a new collection

"lat" : 1.29, "lon" : 103.86, "load" : 12

我正在为 MongoDB 使用 Python 驱动程序。

【问题讨论】:

    标签: mongodb pymongo database


    【解决方案1】:

    是的,有一种方法可以使用 $out 语句来实现

    假设您有两个集合“pc”和“geo”,您将创建集合“allData” - mongo 查询将如下所示:

    db.pc.aggregate([
    {
        $lookup:
        {
            from:"geo"  ,
            localfield:"ip",
            foreginField:"ip",
            as: geoData
        }
    },
    {
        $unwind:"$geoData"
    },
    

    {$project:{transform document as needed}},

    {
        $out    :"allData"
    }   
    ])
    

    要塑造您的 allData 集合,您可以使用 $project 根据需要添加/删除字段。

    【讨论】:

    • 终于有时间运行这个了。我必须创建一些索引来加速它,但这就是我想要的。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2014-10-11
    • 2020-04-23
    • 2018-09-05
    • 1970-01-01
    • 1970-01-01
    • 2017-07-12
    • 2017-07-13
    • 2021-06-15
    相关资源
    最近更新 更多