MongoDB 基本命令

打开MongoDB

在启动MongoDB之前,要手动创建一个存放MongoDB数据文件的目录,如D:\mongo_data

在命令行执行 mongod --dbpath=D:\mongo_data(这是mongoDB服务端,切记不要关闭)

输入mongo命令默认连接到本地的名称为test的数据库,如果希望连接到远程数据库,可以使用mongo ip:port


使用MongoDB命令

建库:user  库名

删除库:db.dropDatabase()

查看所有库:show dbs

查看当前库:db

查看当前数据库所有集合:show collectionos或者show tables

创建集合:db.createCollection("集合名称")  //显示创建

  db.集合名称.insert({key:value,key:value})  //隐式创建,key名加引号

添加文档: db.集合名称.insert({key:value,key:value})

删除文档:db.集合名称.remove({删除条件})  //不添加条件默认删除全部文档

按条件查询集合:db.集合名称.find({条件}),

 db.集合名称.findOne()   //查询第一个文档

  db.collection.find({field:{$gt:value}})  //查询field的值大于value的集合

db.collection.find({field:{$lt:value}})   //查询field的值小于value的集合

db.collection.find({field:{$gte:value}})//查询field的值大于等于value的集合

db.collection.find({field:{$lte:value}})//查询field的值小于等于value的集合

db.collection.find({field:{$ne:value}});//查询field的值不等于value的集合

db.customer.count();//统计集合中的文档记录条数

db.customer.find().count();//统计集合中的文档记录条数

db.customer.find({age:{$lt:5}}).count();//统计age小于5的文档记录条数

db.customer.find().sort({age:1});//根据age升排列

db.customer.find().sort({age:-1});//根据age降排列

db.customer.find().skip(2).limit(5);//查询从第3条记录开始的5条记录(跳过2条)

db.customer.find().sort({age:-1}).skip(2).limit(5);//查询从第3条记录开始的5条记录并且按照age降序排列

db.customer.find().sort({age:-1}).skip(2).limit(3).count();//统计customer集合中的全部文档记录条数

db.customer.find().sort({age:-1}).skip(2).limit(3).count(0);//统计customer集合中的全部文档记录条数

db.customer.find().sort({age:-1}).skip(2).limit(3).count(1);//统计从第3条记录开始的5条记录并且按照age降序排列后的文档记录条数

db.customer.find({post:{$all:[1,2,3]}})//查询1,2,3全部在post中的文档记录(只要有一条不满足。则不成立)

MongoDB 基本命令

db.customer.find({age:{$in:[1,2,3]}})//查询age是1,2,3的文档

MongoDB 基本命令

db.customer.find({age:{$nin:[1,2,3]}})//查询age不是1,2,3的文档

db.customer.find({$or:[{name:"zhangsan0"},{age:15}]})//查询年龄name是zhangsan0或者age为15的文档

db.customer.find({$nor:[{name:"zhangsan0"},{age:15}]})//查询除了年龄name是zhangsan0或者age为15的文档

db.customer.find({name:{$exists:1}}),//查询文档中具有name键的记录

db.customer.find({name:{$exists:0}}),//查询文档中不具有name键的记录

游标的使用:

MongoDB 基本命令

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

参数说明:
criteria:用于设置查询条件的对象
objNew:用于设置更新内容的对象
upsert:如果记录已经存在,更新它,否则新增一个记录,取值为0或1
multi:如果有多个符合条件的记录,是否全部更新,取值为0或1

注意:默认情况下,只会更新第一个符合条件的记录
一般情况下后两个参数分别为0,1 ,即:
db.collection.update(criteria,objNew,0,1)

MongoDB 基本命令db.c1.update({name:”user1”},{$set:{address:”bj”}},0,1)//$set 用来指定一个键的值,如果这个键不存在,则创建它

db.c1.update({name:”user1”},{$inc:{age:1}})//name为use1的记录age加1

db.c1.update({name:”user1”},{$unset:{address:1}},0,1)//$unset 用来删除某个键


MongoDB索引

db.collection.ensureIndex({key:1})//创建普通索引

db.collection.stats()//查看关于索引的相关信息

db.collection.find({key:value}).explain()//查看查询使用索引的情况

db.collection.dropIndex({key:1})//删除索引

db.collection.ensureIndex({key:1},{unique:true})//创建唯一索引

删除集合,也会将集合中的索引全部删除


固定集合

固定集合指的是事先创建而且大小固定的集合 。

固定集合特性:

固定集合很像环形队列,如果空间不足,最早的文档就会被删除,为新的文档腾出空间。一般来说,固定集合适用于任何想要自动淘汰过期属性的场景,没有太多的操作限制。

db.createCollection(“collectionName”,{capped:true,size:100000,max:100});  //创建固定集合

mongodump -h dbhost -d dbname -o dbdirectory//备份数据

-h:MongDB所在服务器地址,例如:127.0.0.1,当然也可以指定端口号:127.0.0.1:27017
-d:需要备份的数据库实例,例如:test
-o:备份的数据存放位置,例如:c:\data\dump,当然该目录需要提前建立,在备份完成后,系统自动在dump目录下建立一个test目录,这个目录里面存放该数据库实例的备份数据。

mongorestore -h dbhost -d dbname -directoryperdb dbdirectory//恢复数据

-h:MongoDB所在服务器地址
-d:需要恢复的数据库实例,例如:test,当然这个名称也可以和备份时候的不一样,比如test2
-directoryperdb:备份数据所在位置,例如:c:\data\dump\test

mongoexport -h dbhost -d dbname -c collectionName -o output//导出数据

-h  数据库地址
-d 指明使用的库
-c 指明要导出的集合
-o 指明要导出的文件名

mongoimport -h dbhost -d dbname -c collectionname //导入数据

-h  数据库地址
-d 指明使用的库
-c 指明要导入的集合

mongod --dbpath d:\mongo_data --auth//开启安全检查


主从复制(主从集群

主节点和从节点要指定不同的端口。

mongod --dbpath d:\master --port 10000 --master//启动主节点

mongod --dbpath d:\slave --port 10001 --slave --source localhost:10000//启动付节点


分片

1、创建三个目录,分别存放两个mongod服务的数据文件和config服务的数据文件

2、开启config服务器 。mongos要把mongod之间的配置放到config服务器里面,所以首先开启它,这里就使用2222端口。 命令为:

mongod --dbpath E:\sharding\config_node --port 2222

3、开启mongos服务器 。这里要注意的是我们开启的是mongos,端口3333,同时指定下config服务器。命令为:
mongos --port 3333 --configdb=127.0.0.1:2222

4、启动mongod服务器 。对分片来说,也就是要添加片了,这里开启两个mongod服务,端口分别为:4444,5555。命令为:
mongod --dbpath E:\sharding\mongod_node1 --port 4444
mongod --dbpath E:\sharding\mongod_node2 --port 5555 

5、服务配置 。client直接跟mongos打交道,也就说明我们要连接mongos服务器,然后将4444,5555的mongod交给mongos,添加分片也就是addshard()。

MongoDB 基本命令

6、开启数据库分片功能,命令很简单 enablesharding(),这里就开启test数据库。 
7、指定集合中分片的片键,这里就指定为person.name键。 

MongoDB 基本命令

8、通过mongos插入10w记录,然后通过printShardingStatus命令查看mongodb的数据分片情况。 

MongoDB 基本命令