设为首页 收藏本站
查看: 1627|回复: 0

[经验分享] MongoDB学习笔记——初体验

[复制链接]

尚未签到

发表于 2015-7-10 10:29:12 | 显示全部楼层 |阅读模式
  MongoDB是一个模式自由的非关系型数据库,由C++编写。
  如果MongoDB模式自由,那么要使用多个集合的理由如下:
  1、让不同类型的文档(行)放在一个集合中,那么做查询的应用程序需要处理所有不同类型的文档,耗时;
  2、在一个集合里面查询特定类型的文档在速度上很不划算?(不明白)
  3、把同类型的文档放在一个集合里面,让数据更加集中,在查询的时候可以减少消耗磁盘寻到的操作;
  4、创建索引的时候,文档会有附加的结构;同种类型的文档放在同一个集合里面,让索引更加有效??(不明白)
  
  部署MongoDB(windows)
  1、创建数据文件夹,如D:/data/db
  2、在cmd中运行MongoDB目录下的bin/mongod.exe,命令如下:



mongod --dbpath D:\data\db
  ok了~
  
  运行MongoDB客户端shell
  运行MongoDB目录下的bin/mongo.exe
  这个shell是一个功能完备的javascript解析器,而MongoDB的创建、读取、更新和删除(CRUD)都是通过javascript完成的,不需要sql语句。
  其中db对象代表当前的数据库,连接的时候默认连接test数据库。
  选择数据库(不需要创建):



use dbname;
  添加doc到collection中(collection不需要手动创建):insert、save



person1={"name":"sam", "age":10};
person2={"name":"samson", "age":11};
//执行这些doc插入语句的时候,名字为person的collection自动创建,并有一个对应的数据库持久化文件存储在data/db
db.person.insert(person1);
//或者用db.person.save(person1);
db.person.insert(person2);
//或者用db.person.save(person2);
/**
**save方法是当collection存在主键一样的doc,则会对其进行属性更新,否则插入doc;
**insert方法则是直接插入一个新的doc,如果存在主键一样的doc,则会报错。
**/
  读取doc:find、findOne、limit



db.person.find();//读取所有的doc
db.person.find().limit(10);//限制读取的doc的数量
db.person.findOne({"age":11});//读取所有age为11的doc
  更新doc:update



person1.age=15;
person1.gender="male";
//将name为sam的doc所有属性,更新为person1的属性,还可以添加新的property
db.person.update({"name":"sam"},person1);
  删除doc:remove



db.person.remove();//清空collection
db.person.remove({"age":20});//删除age为20的doc
  MongoDB中每个文档的_id
加入添加到collection中的doc没有_id属性,那么系统会自动创建一个,并附加到doc里面去。
  系统生成的_id为12字节的24位字符串,每字节为一个16进制的字符;前4个字节为从标准纪元开始的时间戳,然后是3位的机器名,接着是2位的PID(程序id),最后3位是计数器。

DSC0000.png
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-85140-1-1.html 上篇帖子: 将网站中用户上传的零散小文件存储在MongoDB中的.net解决方案 下篇帖子: mongodb sharding 原理学习与试用(三)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表