1、mongodb官网下载: https://www.mongodb.org/downloads  可以下载安装版和解压版;暂时选择解压安装

2、cmd进入mongodb安装目录的bin下,启动mongodb。


mongod开启命令,同时用--dbpath指定数据存放地点为“db”文件夹。


mongod --dbpath=E:\study\db 

 
E:\study\db 
  --logpath= 
 E:\study\db\ 
 MongoDB.log --auth --port=27017 --fork

3、基本的增删改查


(1)、shell下的操作


输入mongo以后执行以下操作

 show dbs;显示数据库列表


show collections;显示当前数据库中的集合(类似关系数据库中的表)


show  users;显示当期用户;


use myFirstDb;切换\创建数据库


db.help();数据库常用命令


db.cloneDatabase(“127.0.0.1”); 将指定机器上的数据库的数据克隆到当前数据库


db.copyDatabase("mydb", "temp", "127.0.0.1");将本机的mydb的数据复制到temp数据库中


Collection聚集集合操作


1、创建一个聚集集合(table)


capped:true, max: 100});#当为true时不能删除,否则可以删除


2、得到指定名称的聚集集合(table)


db.getCollection("account");


db.getCollectionNames();


3、显示当前db所有聚集索引的状态


db.printCollectionStats();


用户相关


1、添加一个用户


db.createUser


举例: db. createUser (    {user: "accountUser",pwd: "password",roles: [ "readWrite", "dbAdmin" ]})


2、删除用户




聚合(类似关系型数据库的表)的详细操作


查:db.dong.find();#类似 select * from  dong ; 但是你可以设置每页显示数据的大小,用DBQuery .shellBatchSize = 50; 这样每页就显示50条记录了。默认20用it迭代


增:db.dong.save({name:"dong",age:26});添加数据


改:db.dong.update({age:26},{$set:{name:'zhou'}});类似:update dong set name = 'zhou' where age = 26;


删除:db.dong.remove({age:26});删除age是26的数据(db.dong. isCapped()当时true是不能删除


 for(var i=0;i<20;i++){db.dong.save({name:"dong"+i,age:26+i})};


一些常用查询命令:


2、查询去掉后的当前聚集集合中的某列的重复数据



db.userInfo.distinct("name");



会过滤掉name中的相同数据



相当于:select distict name from userInfo;



3、查询age = 22的记录



db.userInfo.find({"age": 22});



相当于: select * from userInfo where age = 22;



4、查询age > 22的记录



db.userInfo.find({age: {$gt: 22}});



相当于:select * from userInfo where age >22;



5、查询age < 22的记录



db.userInfo.find({age: {$lt: 22}});



相当于:select * from userInfo where age <22;



6、查询age >= 25的记录



db.userInfo.find({age: {$gte: 25}});



相当于:select * from userInfo where age >= 25;



7、查询age <= 25的记录



db.userInfo.find({age: {$lte: 25}});



8、查询age >= 23 并且 age <= 26



db.userInfo.find({age: {$gte: 23, $lte: 26}});



9、查询name中包含 mongo的数据



db.userInfo.find({name: /mongo/});



//相当于%%



select * from userInfo where name like ‘%mongo%’;



10、查询name中以mongo开头的



db.userInfo.find({name: /^mongo/});



select * from userInfo where name like ‘mongo%’;



11、查询指定列name、age数据



db.userInfo.find({}, {name: 1, age: 1});



相当于:select name, age from userInfo;



当然name也可以用true或false,当用ture的情况下河name:1效果一样,如果用false就是排除name,显示name以外的列信息。



12、查询指定列name、age数据, age > 25



db.userInfo.find({age: {$gt: 25}}, {name: 1, age: 1});



相当于:select name, age from userInfo where age >25;



13、按照年龄排序



升序:db.userInfo.find().sort({age: 1});



降序:db.userInfo.find().sort({age: -1});



14、查询name = zhangsan, age = 22的数据



db.userInfo.find({name: 'zhangsan', age: 22});



相当于:select * from userInfo where name = ‘zhangsan’ and age = ‘22’;



15、查询前5条数据



db.userInfo.find().limit(5);



相当于:selecttop 5 * from userInfo;



16、查询10条以后的数据



db.userInfo.find().skip(10);



相当于:select * from userInfo where id not in (



selecttop 10 * from userInfo



);



17、查询在5-10之间的数据



db.userInfo.find().limit(10).skip(5);



可用于分页,limit是pageSize,skip是第几页*pageSize



18、or与 查询



db.userInfo.find({$or: [{age: 22}, {age: 25}]});



相当于:select * from userInfo where age = 22 or age = 25;



19、查询第一条数据



db.userInfo.findOne();



相当于:selecttop 1 * from userInfo;



db.userInfo.find().limit(1);



20、查询某个结果集的记录条数



db.userInfo.find({age: {$gte: 25}}).count();



相当于:select count(*) from userInfo where age >= 20;



21、按照某列进行记数



db.userInfo.find({sex: {$exists: true}}).count();



相当于:select count(sex) from userInfo;



索引



1、创建索引



db.userInfo.ensureIndex({name: 1});



db.userInfo.ensureIndex({name: 1, ts: -1});



2、查询当前聚集集合所有索引



db.userInfo.getIndexes();



3、查看总索引记录大小



db.userInfo.totalIndexSize();



4、读取当前集合的所有index信息



db.users.reIndex();