基本上我正在设计和开发一个Python应用程序,每天晚上执行并获取一个网站和一个关键字列表,并查询Google API以获得给定特定关键字的位置。
我想使用无sql方法并使用Mongodb提供的对象这似乎是最好的方法,但我对如何构建数据库内的数据感到困惑。
每晚都会生成新数据,这将包含50个关键字及其位置,我认为这些关键字将存储在自己的对象中,并且可以通过特定网址识别。
因此,是否可以在给定网址的情况下查询数据库并使用过去30天或60天的数据范围?如果我能够获取所有对象,我会感到困惑
答案 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的力量!