1.数据库服务启动之前:
在启动MongoDB服务端之前,要手动指定一个存放MongoDB数据文件的目录,如
D:\mongo_data
在命令行执行 mongod --dbpath=D:\mongo_data
2.启动服务:在命令行中可以使用mongo命令连接到MongoDB服务器,如下,
输入mongo命令默认连接到本地的名称为test的数据库,
如果希望连接到远程数据库,可以使用mongo ip:port 加上"/库名",直接连接到库
db.help(): 数据库操作的查看帮助
1.库操作
use 数据库名称 ,如:use mydb1
• 删除当前数据库,使用命令 db.dropDatabase()
• 查看所有数据库,使用命令 show dbs
• 查看当前所在数据库,使用命令 db
• 查看当前数据库中所有的集合,使用命令 show collections 或使用show tables
2.集合:
• 创建集合有两种方式,显示创建和隐式创建
显示创建可以使用命令 db.createCollection(“集合名称")
隐式创建可以使用命令 db.集合名称.insert({}),指创建集合并同时向集合中插入数据,例如:
db.customer.insert({name:”jack”})
2.1插入:
• 向集合添加文档,使用命令 db.集合名称.insert({}),例如:
db.user1.insert({name:”jack”,age:20})
2.2删除:
• 删除集合中的文档,使用命令 db.集合名称.remove({删除条件}),不加删除条件为删除集合中的所有文档,例如,db.c1.remove() 为删除c1集合中的所有文档,
db.c1.remove({name:”user1”})为删除c1集合中name为user1的文档
2.3查询:
• 查询集合中的文档,可以使用命令 db.集合名称.find({条件}),或者使用 db.集合名称.findOne()
• 查询集合中的文档,返回某些特定的键值
//大于: 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}});
查询集合中的文档
db.customer.count();
db.customer.find().count();
db.customer.find({age:{$lt:5}}).count();
db.customer.find().sort({age:1}); 降序为-1
db.customer.find().skip(2).limit(3); //分页
db.customer.find().sort({age:-1}).skip(2).limit(3);
db.customer.find().sort({age:-1}).skip(2).limit(3).count();//返回所有
db.customer.find().sort({age:-1}).skip(2).limit(3).count(0);//返回所有
db.customer.find().sort({age:-1}).skip(2).limit(3).count(1);//返回3,
关键字:
$all • 查询集合中的文档 ,$all主要用来查询数组中的包含关系,查询条件中只要有一个不包含就不返回
$in查询集合中的文档 ,$in,类似于关系型数据库中的IN
•,$nin,与$in相反
$or查询集合中的文档 ,$or,相当于关系型数据库中的OR,表示或者的关系,例如查询name为user2或者age为3的文档,命令为:
db.customer.find({$or:[{name:”user2”},{age:3}]})
$nor,查询集合中的文档 ,$nor,表示根据条件过滤掉某些数据,例如查询name不是user2,age不是3的文档,命令为:
db.customer.find({$nor:[{name:”user2”},{age:3}]})
$exists• 查询集合中的文档 ,$exists,用于查询集合中存在某个键的文档或不存在某个键的文档,例如查询customer集合中存在name键的所有文档,
可以使用 db.customer.find({name:{$exists:1}}),
$exists:1表示真,指存在
$exists:0表示假,指不存在
游标:
2.4更新:集合中的文档
db.collection.update(criteria,objNew,upsert,multi)
参数说明:
criteria: 条件 用于设置查询条件的对象
objNew: 更新内容 用于设置更新内容的对象
upsert: 是否创建 如果记录已经存在,更新它,否则新增一个记录,取值为0或1
multi: 是否全部更新 如果有多个符合条件的记录,是否全部更新,取值为0或1
注意:默认情况下,只会更新第一个符合条件的记录
一般情况下后两个参数分别为0,1 ,即:
db.collection.update(criteria,objNew,0,1)
更新集合中的文档,将集合中name为user1的文档改成name为jack
$set
• 更新集合中的文档, $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
• 更新集合中的文档,使用 $inc 将集合中name为user1的age加1,其它键不变, $inc表示使某个键值加减指定的数值
$unset
• 更新集合中的文档, $unset
db.c1.update({name:”user1”},{$unset:{address:1}},0,1)