崬城衞 发表于 2015-7-8 10:59:29

MongoDB的一些用法(转藏)

  MongoDB是目前工作中经常使用到的NoSQL数据库。
  本博客只记录相关理论知识和技巧,涉及到实践的部分都会单开Blog来记录实践过程。
  -------------------------------------------------------------------------------
  体系结构:
  一般一个MongoDB Server包含一个实例和多个数据库,也可以多个实例和多个数据库。
  MongoDB默认数据目录是/data/db,它存储所有mongodb的数据文件。
  每个数据库都包含一个.ns文件和一些数据文件,而且这些数据文件会随着数据量的增加越来越多。
  
  MongoDB内部有预分配空间的机制,每个预分配的文件都用0进行填充。
  数据文件每新分配一次,它的大小都是上一个数据文件大小的2倍,每个数据文件最大2G。
  
  MongoDB每个集合和每个索引都对应一个命名空间,这些命名空间的元数据集中在16M的*.ns文件中,平均每个命名占用约 628 字节,也即整个数据库的命名空间的上限约为24000。
  如果每个集合有一个索引(比如默认的_id索引),那么最多可以创建12000个集合。如果索引数更多,则可创建的集合数就更少了。同时,如果集合数太多,一些操作也会变慢。
  要建立更多的集合的话,MongoDB 也是支持的,只需要在启动时加上“--nssize”参数,这样对应数据库的命名空间文件就可以变得更大以便保存更多的命名。这个命名空间文件(.ns文件)最大可以为 2G。
  每个命名空间对应的盘区不一定是连续的。与数据文件增长相同,每个命名空间对应的盘区大小都是随分配次数不断增长的。目的是为了平衡命名空间浪费的空间与保持一个命名空间数据的连续性。
  需要注意的一个命名空间$freelist,这个命名空间用于记录不再使用的盘区(被删除的Collection或索引)。每当命名空间需要分配新盘区时,会先查看$freelist是否有大小合适的盘区可以使用,如果有就回收空闲的磁盘空间。
  
  MongoDB默认存储数据目录为/data/db,默认端口为27017,默认HTTP端口为28017。
  
  MongoDB一般参数:
  Journal -- 开启日志,通过保存操作日志来降低单机故障恢复的时间。
  Syncdelay -- 系统同步刷新磁盘的时间,单位为秒,默认60秒。
  Repairpath – 执行repair时的临时目录,在如果没有开启journal,异常down机后重启,必须执行repair操作。
  执行mongod –help可以看见对大多数参数的解释。
  
  停止mongodb:
  (1)Ctrl + C
  (2)>mongo –port 20813
  >use admin
  >db.shutdownserver();
  (3)kill -2 PID
  
  不要预先插入集合,在第一次插入的时候会自动创建。
  使用find查询时,如果数据过多则不会全部显示,使用it命令继续迭代输出。
  >it (迭代输出)
  
  MongoDB每个文档都有一个默认的主键_id,这个主键名称是固定的。可以是MongoDB支持的任何数据类型,默认是ObjectId。但同一个集合中_id类型必须唯一,且不能插入值相同的数据。
  
  
  创建数据库
  use dbname
  这样就创建了一个数据库。如果什么都不操作离开的话,这个库就会被系统删除。
  show dbs//查看数据库
  show collections//查看集合
  
  基本操作
  db.collection.update({a:99},{$set:{a:2}})//update
  db.collection.remove({a:2})   //remove {a:2}
  db.collection.remove()   //remove all
  
  db.collection.find()
  db.collection.find({name:”mongo”})
  db.collection.findOne({name:”mongo”})
  
  db.collection.find({a:{$gt:3}})// a > 3
  db.collection.find({a:{$lt:5}})// a < 5
  db.collection.find({a:{$gte:3}})// a >= 3
  db.collection.find({a:{$lte:5}})// a
页: [1]
查看完整版本: MongoDB的一些用法(转藏)