很抱歉不得不问这个,但我是MongoDB的新手(只有相关数据库方面的经验),并且对如何构建MongoDB感到好奇。
文档将采用JSON格式,并带有以下某些字段:
{
"url": "http://....",
"text": "entire ad content including HTML (very long)",
"body": "text (50-200 characters)",
"date": "01/01/1990",
"phone": "8001112222",
"posting_title": "buy now"
}
某些值将是非常长的字符串。
每个文档基本上都是来自某个城市的广告。我们正在为美国许多大城市存储所有广告(约422个)。我们每天都会存储更多广告,每个城市的广告数量从0到2000不等。平均值大概在700-900左右。
我们需要在几乎即时的时间内(如果可能的话)进行以下类型的查询:
你会推荐什么?我想我应该有422个收藏品 - 每个城市一个。我们只是在查询电话号码时担心查询时间,因为它需要遍历每个集合。我有一个包含所有集合名称的可迭代列表。
或者只是拥有一个系列会更快,以至于我不必切换到422个系列?
非常感谢大家。我在这里回答任何问题!
编辑:
这是我的#34;遍历所有集合"片段:
for name in glob.glob("Data\Nov. 12 - 5pm\*"):
val = name.split("5pm")[1].split(".json")[0][1:]
coll = db[val]
# Add into collection here...
答案 0 :(得分:0)
MongoDB不提供任何从多个集合中获取结果的操作,因此在这种情况下不建议将数据放在多个集合中。
通过为他们创建indexes,您可以大大加快您提到的所有用例。当您拥有一个非常大的数据集并始终查询完全相等时,hashed indexes是最快的。
当您查询一系列日期(第x天和第y天之间)时,您应该使用the Date type而不是字符串,因为这不仅可以让您使用大量方便的date operators in aggregation而且还允许您可以使用升序或降序索引来加速远程查询和排序。
答案 1 :(得分:0)
也许我错过了一些东西,但不会制造" city" JSON中的字段可以解决您的问题吗?这样你只需要做这样的事情db.posts.find({ city: {$in: ['Boston', 'Michigan']}})