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中的文档记录(只要有一条不满足。则不成立)
db.customer.find({age:{$in:[1,2,3]}})//查询age是1,2,3的文档
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键的记录
游标的使用:
db.collection.update(criteria,objNew,upsert,multi)
参数说明:
criteria:用于设置查询条件的对象
objNew:用于设置更新内容的对象
upsert:如果记录已经存在,更新它,否则新增一个记录,取值为0或1
multi:如果有多个符合条件的记录,是否全部更新,取值为0或1
注意:默认情况下,只会更新第一个符合条件的记录
一般情况下后两个参数分别为0,1 ,即:
db.collection.update(criteria,objNew,0,1)
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\testmongoexport -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:22224、启动mongod服务器 。对分片来说,也就是要添加片了,这里开启两个mongod服务,端口分别为:4444,5555。命令为:
mongod --dbpath E:\sharding\mongod_node1 --port 4444
mongod --dbpath E:\sharding\mongod_node2 --port 55555、服务配置 。client直接跟mongos打交道,也就说明我们要连接mongos服务器,然后将4444,5555的mongod交给mongos,添加分片也就是addshard()。
6、开启数据库分片功能,命令很简单 enablesharding(),这里就开启test数据库。
7、指定集合中分片的片键,这里就指定为person.name键。
8、通过mongos插入10w记录,然后通过printShardingStatus命令查看mongodb的数据分片情况。