Mongodb可以构建这些数据

时间:2016-12-11 19:50:16

标签: python mongodb

基本上我正在设计和开发一个Python应用程序,每天晚上执行并获取一个网站和一个关键字列表,并查询Google API以获得给定特定关键字的位置。

我想使用无sql方法并使用Mongodb提供的对象这似乎是最好的方法,但我对如何构建数据库内的数据感到困惑。

每晚都会生成新数据,这将包含50个关键字及其位置,我认为这些关键字将存储在自己的对象中,并且可以通过特定网址识别。

因此,是否可以在给定网址的情况下查询数据库并使用过去30天或60天的数据范围?如果我能够获取所有对象,我会感到困惑

1 个答案:

答案 0 :(得分:1)

该结构的主要要求是能够每天查询。

所以我们假设有一个网站www.stackoverflow.com和我们的 X 关键字。 基本文档形状可能如下所示:

{
    _id : objectId, // this have timestamp
    www : "www.stackoverflow.com",
    rankings : [{
            "key1" : "val1"
        }, {
            "key2" : "val2"
        }
    ],

}

然后,如果我们想要查看每key1的排名历史记录,我们可以使用聚合框架来查询:

db.ranking.aggregate(
    [{
            $unwind : "$rankings"
        }, {
            $match : {
                        "rankings.key1" : { $exists : true}    
            }

        }
    ])

并且回复类似于:

{
    "_id" : ObjectId("584dbe04f4ce077869fee3dc"),
    "www" : "www.stackoverflow.com",
    "rankings" : {
        "key1" : "val1"
    }
},
{
    "_id" : ObjectId("584dbe07f4ce077869fee3dd"),
    "www" : "www.stackoverflow.com",
    "rankings" : {
        "key1" : "val1"
    }
}

寻求更多关于聚合框架中的分组以发现mongo的力量!