下载mongogDB地址:http://www.mongodb.org/downloads
1.下载解压
2.在启动MongoDB之前,要手动创建一个存放MongoDB数据文件的目录,如e:\mongo_data
3.启动monggoDB,在cmd窗口输入:mongod --dbpath=e:\mongo_data
1).在这里可以把mongoDB服务注册到本地服务中输入命令:e:\mongodb\bin\mongod.exe --logpath e:\mongo_log\mongodb.log --logappend --dbpath e:\mongo_data -- directoryperdb --serviceName MongoDB --install
2)把mongoDB从本地服务删除输入命令:e:\mongodb\bin\mongod.exe --logpath e:\mongo_log\mongodb.log --logappend --dbpath e:\mongo_data --directoryperdb --serviceName MongoDB --remove
4.连接本地mongoDB服务再启动一个cmd命令窗口输入:mongo,获得连接 默认是连接本地test库,如果是连接远程仓库可以使用:mongo ip: port;
5.常用命令:
1)创建数据库和集合
use myDB :创建myDB数据库,这里是隐式创建,如果此时退出,数据库会被删除,只有在此数据库创建集合的时候,才会生成数据文件。这才创建成功!
db.dropDatabase(): 删除数据库
db:查看当前所在库
show dbs :查看所有创建的数据库
show tables/collections :查看数据库中集合或表
db.createCollections("集合名"):创建集合
db.集合名.insert({name:"tom"}) :创建集合并插入数据
db.集合名.drop():删除集合
2)对数据操作
db.集合名称.save({})/db.集合名称.insert({}):向集合添加文档 ,例如:db.user1.insert({name:”jack”,age:20})
批量插入数据
for(var i=0;i<10;i++){
db.user1.insert({name:”name”+i ,age:i});
}
db.集合名称.find({条件}): 查询集合中的文档
db.集合名称.findOne() 查询第一个文档
投影查询:
db.user1.find({},{age:0})返回除了age字段其余所有的字段
db.user1.find({name:"jack"},{age:0}):返回name=jack,除了年龄字段所有的字段
db.user1.find({userId:16},{name:1})返回userId=16name的字段 注:(对象_id会一直返回,不管指不指定)
条件表达式查询:
//大于: field > value
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}});
统计(count)、排序(sort)、分页(skip、limit) 查询
db.user.count();
db.user.find().count();
db.user.find({age:{$lt:5}}).count();
db.user.find().sort({age:1});
db.user.find().skip(2).limit(3);
db.user.find().sort({age:-1}).skip(2).limit(3);
db.user.find().sort({age:-1}).skip(2).limit(3).count();
db.user.find().sort({age:-1}).skip(2).limit(3).count(0);
db.user.find().sort({age:-1}).skip(2).limit(3).count(1);
查询集合中的文档 ,$all主要用来查询数组中的包含关系,查询条件中只要有一个不包含就不返回
db.tt.insert({name:"jack",age:[1,2,3,4]});
db.tt.find({age:{$all:[2]}}); 查询年龄包含2的数据
查询集合中的文档 ,$in,类似于关系型数据库中的in
db.tt.find({age:{$in:[1,2]}});查询年龄为1和2的数据
查询集合中的文档 ,$nin,与$in相反;
查询集合中的文档 ,$or,相当于关系型数据库中的OR,表示或者的关系,例如查询name为user2或者age为3的文档,命令为:
db.tt.find({$or:[{name:”user2”},{age:3}]})
查询集合中的文档 ,$exists,用于查询集合中存在某个键的文档或不存在某个键的文档,例如查询customer集合中存在name键的所有文档,可以使用 db.tt.find({name:{$exists:1}}),
$exists:1表示真,指存在
$exists:0表示假,指不存在
遍历集合文档
var x=db.tt.find();
x.hasNext();
x.next();
更新集合中的文档,语法如下:
db.collection.update(criteria,objNew,upsert,multi)例如:db.collection.update(criteria,objNew,0,1)
,$set 用来指定一个键的值,如果这个键不存在,则创建它。例如:
给name为user1的文档添加address,可以使用命令:db.c1.update({name:”user1”},{$set:{address:”bj”}},0,1)
将name为user1的文档修改address为tj,其它键值对不变,命令为:db.c1.update({name:”user1”},{$set:{address:”tj”}},0,1)
更新集合中的文档,使用 $inc 将集合中name为user1的age加1,其它键不变, $inc表示使某个键值加减指定的数值例如:db.tt.update({name:"jack"},{$inc:{age:1}}) 把jack的年龄加1
更新集合中的文档,$unset 用来删除某个键,例如删除name为user1的文档中的address键,例如:db.c1.update({name:”user1”},{$unset:{address:1}},0,1)