mongoDB入门一

来源:互联网 发布:经典长文案 知乎 编辑:程序博客网 时间:2024/06/05 10:47

下载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.集合名称.remove({删除条件}):不加删除条件为删除集合中的所有文档,例如,db.c1.remove() 为删除c1集合中的所有文档,db.c1.remove({name:”user1”})为删除c1集合中   name为user1的文档

 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)





2 0