MongoDB旅行记(一)

零、什么是MongoDB?

    MongoDB,顾名思义,一定是数据库啦,那和现在流行的Mysql、Oracle等等关系型数据库有什么区别么?Mongo和Mysql一样,都是开源的,只不过它不是关系型数据库,而是面向文档的,而且它的schema没有固定的结构,所以schema很灵活,便于以后业务模型的扩展,同时呢,它没有关系型数据库那么死板,什么都得规定好了,查个数据还得联来来去,但是话说回来,它虽然敏捷性和高可用性都很不错,但是因为没有所谓的“关系“,就会冗余更多的数据。mongo令人兴奋得地方远远不止于此,还有自动主从复制、水平扩展,map/reduce等等。



那么,我们开始吧,GO

       默认情况下,mongo会寻找端口为27017的本地数据库服务器,如果想要连接到特定的数据库服务器,需要显示的用—port和—host来指定,同时,有一个简单的方法:
mongo 主机:端口/用户


。通过mongo shell,默认情况下,你将会被连接到一个test数据库,可以通过
db


查看当前所在的数据库。如果你想显示数据库列表,可以通过

show dbs


命令切换到一个新的、名字为mydb的数据库,可以通过
use mydb


命令,当你切换到mydb这个新的数据库时,该数据库不会真的被创建,只有当你向这个数据库中插入一条数据时,该数据库才会被真的创建。你能用help命令查看mongodb的所有文档,如果你想查看某部分的文档,可以去调用某个状态下的.help()方法,mongodb在你插入数据以前,不需要你创建collection,因为mongodb是用动态的schema,所以,在插入数据到collection中时,你不需要指定collection的文档结构。想数据库mydb数据库中为collection是testData文档中插入一条数据:用use mydb设置数据库的上下文
db.testData.insert({name: “hello"});


当你插入第一个文档时候,mongod将要会创建mydb数据库和testData集合。为了确认testData集合是否存在,可以通过show collections命令查看当前上下文的数据库中集合的列表。可以通过db.testData.find()查看当前集合中所有的document,在返回的结果中ObjectId得值将是唯一的。因为所有的Mongodb文档必须有一个_id字段的唯一值,并且,不需要显示的去插入_id的值,因为mongo会自动创建唯一的ObjectId的值,并且自动插入到集合中通过find()方法查找的数据,其实返回结果是游标对象当通过printjson(c[4])访问find()返回的游标对象时,mongo首先会调用
cursor.toArray()


方法,并且加载通过游标返回所有文档的结果到内存中,索引也就是那时候被应用到结果集合。对于非常大得数据集,mongo可能出现内存溢出。通过
findOne()


方法返回一个文档,值得注意的是,这个findOne方法也是调用find方法,只不过传入了一个参数,返回的是一个文档,而不是一个cursor。


    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值