MongoDB入门

  1. Document

    1. MongoDB是基于Document作为数据存储。

    2. Document在数据形式中表现为BSON格式。为{"key1":value1,"key2":value2} 这种形式。

    3. Document中的Key通常是字符串,键中不能含有\0,.,$,_开头 字符

    4. Document中的Key区分大小写,并且唯一。

  2. Collection

    1. Collection就是一组Document,Collection\Document类似于关系数据库中数据表和行的关系。

    2. 通常把相同类型的Document放到一个Document中。这样也方便建立索引

    3. 集合名称为字符串类型,不能为"",不能含有\0,不能以system.开头(由于系统集合保留着system前缀,例如system.users保存数据库的用户信息,system.namespaces保存着数据库的集合信息),不能包含$字符(由于某些系统生成的集合中包含该字符)。

    4. 每个Collection都会有一个_id默认字段,默认是ObjectId类型。ObjectId使用12字节存储空间,每个字节两个16进制数。这里直接截《MongoDB权威指南》里的图片,格式如下:

      blob.png

      时间戳使用的是本地当前时间;主机唯一标识符(通常是机器主机名的散列值);PID 进程标识符;最后三个保证在同一秒,同一机器,同一进程产生不同的ObjectId。

  3. Database

    1. 多个Collection组成一个Database,每个Database多有独立的权限控制,在磁盘上放置在不同的文件。

    2. 数据库名称为字符串,不能是"",不能含有空格,.,$,/,\,\0 字符,应该全部小写,最多64字节。

    3. 有些数据库名是保留的 admin root数据库,用户自动继承所有数据库的权限;local 永远不会被赋值,可以用来存储限于本地服务器的数据;config mongo用户分片设置时,保存分片的相关信息。

    命名空间:把数据库名字放到集合名前面,就是一个命名空间。要求命名空间长度一般要求小于100字节,例如testdb.school.students

  4. 运行MongoDB Server

    1. windows 作为服务每次开机自动启动。

    2. 创建StartServer.bat 批处理文件。

    3. goto start

      --directoryperdb 每个DB都会新建一个目录

      --logappend 日志追加

      --serviceName "MongoDB" -install 注册成windows服务

      warning: set赋值=中间不要有空格

      :start

      :@echo off

      set dbpath="H:\MongoDB\Server\3.2\data\db"

      set logpath="H:\MongoDB\Server\3.2\data\log\mongo.log"

      .\bin\mongod --logpath %logpath% --logappend --dbpath %dbpath% --directoryperdb --serviceName "MongoDB" --serviceDisplayName "MongoDB" --install

    4. 管理员权限运行。

    5. linux 编写类似shell文件,运行

    6. MongDB默认监听27017端口,可以通过http://localhost:27017查看mongodb是否开启

  5. Mongo shell

    1. CURD: 

      1. db.createCollection('collection_name'); 创建Collection

      2. db.collection_name.insert({BSON格式数据});//这里的BSON格式数据可以内嵌Document结构

      3. db.collection_name.update({"student_name":"xiaoming"},{$set:{"age":"12"}},false,true);

        db.collection_name.update( criteria, objNew, upsert, multi )

        criteria : update的查询条件,类似sql update查询内where后面的
        objNew   : update的对象和一些更新的操作符(如$set,$inc,$push,$addToSet...)等,也可以理解为sql update查询内set后面的
        upsert   : 如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
        multi    : mongodb默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。

      4. 这里还可以尝试$ne/$push , $addToSet/$each , 这里addToSet可以避免插入数组重复,each可以插入多个。ne/push 主要用在插入对象是Document上面。addToSet/each 可以方便的在数组中追加数据。

      5. db.collection_name.find({查询条件}).[limit(number) 限制最多number条数据,skip(number) 跳过最开始钱的number条数据 ,count() 统计数量,sort({"sortelement":1 升序 -1 降序})];

      6. db.collection_name.findOne(); 查询第一条数据

      7. 关于查询条件:== "key":"value"; > gt; < lt; >= gte; <= lte; != ne; 例如 db.collection_name.find({'age':{$gt:14,$lt:24}});选择>14 <24的Documents ;

        查询字符串条件可以为正则,例如db.collection_name.find({'name':/^l/}); 查询名字l开头的数据,正则不要加''、""。

        关于或条件:db.collection_name.find({$or:[{'age':{$lt:10}},{'age':{$gt:60}}]});

        关于获取指定列:db.collection_name.find({$or:[{'age':{$lt:10}},{'age':{$gt:60}}]},{'name':true});

      8. db.collection_name.remove({删除条件}) //删除Document

      9. db.collection_name.drop(); //删除Collection

      10. db.dropDatabase(); //删除数据库

    2. Others

      1. show dbs;

      2. show collections;

      3. use db_name;

      4. db.collection_name.renameCollection("new_collection_name");

      5. db //显示db变量值,也就是当前指向的数据库。

      6. help 查看更多命令

    3. 这里Mongo shell用的JavaScript解析器,可以运行任何JavaScript程序,和JavaScript标准库。

  6. 提供一本非常好的入门书《MongoDB权威指南》

    MongoDB权威指南(中文版).pdf

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值