Optimization Tips | Tip #26: Create hierarchical documents for faster scans
2012-03-26 00:00
211 查看
原版书 <<50 Tips and Tricks for MongoDB Developers>> 地址:http://oreilly.com/catalog/0636920019893
皮皮书屋下载地址:http://www.ppurl.com/2011/05/50-tips-and-tricks-for-mongodb-developers.html
本书的所有翻译地址: http://blog.csdn.net/crazyjixiang/article/category/858638
翻译目的: MongoDB资料国内很少,书就更不必说了,借助对MongoDB的理解为大家做点贡献,如果有翻译有误的地方请指正,不能误入子弟,谢谢!
译者: Crazybaby
对Tip# 26 翻译如下:
保持你的数据组织是分层的 ,不仅仅是组织化的,而且MongoDB可以在没有索引的情况下搜索上更快(在某些情况下)。
比如,设想你要在没有索引的情况下查询一些数据集。根据之前提及的,MongoDB不得不从头到尾在每个集合每个文档中进行标准匹配,根据你的文档结构,这将花费不同的时间。
让我们看下user集合的平面结构:
现在,我们来试着查询:
> db.users.find({"zip" : "10003"})
MongoDB内部会怎么样查询?它不得不从头到尾每个集合中的单元中查询zip单元,如图所示:
![](http://static.oschina.net/uploads/img/201203/26183457_BI7o.gif)
现在,通过内嵌集合,我们可以创建我们自己的"tree" 让MongoDB查询更快些.试想我们把结构改成这样:
现在我们来试着这样查询:
> db.users.find({"address.zip" : "10003"})
MongoDB在找到address必要的前缀之前,不得不查询_id,name和online,然后再查找zip这个单元。使用一个合理的分层结构使MongoDB不不需要对每个单元进行匹配。
$(document).ready(function(){dp.SyntaxHighlighter.HighlightAll('code');});
原文链接:
http://blog.csdn.net/crazyjixiang/article/details/6676401
皮皮书屋下载地址:http://www.ppurl.com/2011/05/50-tips-and-tricks-for-mongodb-developers.html
本书的所有翻译地址: http://blog.csdn.net/crazyjixiang/article/category/858638
翻译目的: MongoDB资料国内很少,书就更不必说了,借助对MongoDB的理解为大家做点贡献,如果有翻译有误的地方请指正,不能误入子弟,谢谢!
译者: Crazybaby
对Tip# 26 翻译如下:
保持你的数据组织是分层的 ,不仅仅是组织化的,而且MongoDB可以在没有索引的情况下搜索上更快(在某些情况下)。
比如,设想你要在没有索引的情况下查询一些数据集。根据之前提及的,MongoDB不得不从头到尾在每个集合每个文档中进行标准匹配,根据你的文档结构,这将花费不同的时间。
让我们看下user集合的平面结构:
{ "_id" : id, "name" : username, "email" : email, "twitter" : username, "screenname" : username, "facebook" : username, "linkedin" : username, "phone" : number, "street" : street "city" : city, "state" : state, "zip" : zip, "fax" : number }
现在,我们来试着查询:
> db.users.find({"zip" : "10003"})
MongoDB内部会怎么样查询?它不得不从头到尾每个集合中的单元中查询zip单元,如图所示:
![](http://static.oschina.net/uploads/img/201203/26183457_BI7o.gif)
现在,通过内嵌集合,我们可以创建我们自己的"tree" 让MongoDB查询更快些.试想我们把结构改成这样:
{ "_id" : id, "name" : username, "online" : { "email" : email, "twitter" : username, "screenname" : username, "facebook" : username, "linkedin" : username, }, "address" : { "street" : street, "city" : city, "state" : state, "zip" : zip } "tele" : { "phone" : number, "fax" : number, } }
现在我们来试着这样查询:
> db.users.find({"address.zip" : "10003"})
MongoDB在找到address必要的前缀之前,不得不查询_id,name和online,然后再查找zip这个单元。使用一个合理的分层结构使MongoDB不不需要对每个单元进行匹配。
$(document).ready(function(){dp.SyntaxHighlighter.HighlightAll('code');});
原文链接:
http://blog.csdn.net/crazyjixiang/article/details/6676401
相关文章推荐
- C++优化三板斧:Three Optimization Tips for C++
- 50.Tips.and.Tricks.for.MongoDB.Developers --- Optimization Tips
- 40 Developer Tips for Android Optimization
- [Tip: C# in VS]Some quick tips for working on C# in VS
- Optimization Tips | Tip #27: AND-queries should match as little as possible as fast as possible
- Tips for Optimization Linux Memory Usage
- Three Optimization Tips for C++
- Create a Git Mirror (for your hg repository) / hg tip
- Maximum FPS: Three Tips for Faster Code
- 40 Tips for optimizing your php Code
- RxJava2出现:Unable to create call adapter for io.reactivex.Flowable
- Tips for Manipulating Maven POM in Eclipse
- Linking code for an enhanced application binary interface (ABI) with decode time instruction optimization
- [ASP.NET AJAX]Important notes when we create web service methods for some extenders in AjaxControlToolkit package
- Postgresql 启动could not create listen socket for "localhost"错误的解决
- 10 Tips for Razor Sharp Concentration
- 10 Tips for Proper Application Logging
- zabbix监控PostgreSQL服务器时unable to create mutex for log file
- 论文阅读之:Is Faster R-CNN Doing Well for Pedestrian Detection?
- PatentTips - Interrupt redirection for virtual partitioning