1.安装mongoDB,配置环境变量至path
2.写文件存储路径,log存储路径
3.配置属性文件conf,属性详细查看菜鸟教程,属性指定2中对应存储路径
4.将mongoDB服务加入到windows服务中,需要写好属性安装;sc delete 服务名可以删除服务
5.基本操作 show databases查看所有数据库 cls清屏
use dept 来进入dept数据库
db.createCollection("emp")建立集合,相当于建表,
db.emp.insert({"数据":"值"}) 向emp集合中插入文档,所有的文档格式都是bson串
show collections查看所有的集合名称
db.emp.find({条件}),若没条件相当于查看所有emp集合的数据
db.emp.remove({"_id":"xxx"})删除emp集合众数据操作
db.emp.update(条件,新的json串)更新操作, 所有要填充的内容都是bson格式
db.emp.drop()删除这个集合
db.dropDatabase() 删除当前所在的数据库,必须切换到数据库后才可以删除
6.mongoDB与js完美结合,js语句都能适用
7.查询操作 db.emp.find({条件},{投影操作}) 0不显示,1为显式 .pretty()为漂亮的显示
db.dept.find({},{"url":1})搜索全部,但只显示他们的url属性那一项
更新操作 db.emp.update({},{$inc:{"age":10}},false,true)给任何条件更新age加10,
第三个参数false为是否允许加入新字段,true为是否一次允许更新多条记录,默认只更新第一条
$set也可以直接添加字段,但是默认一条,通过上述改变一次添加多条
8.关系查询 $gt大于 $lt小于 $gte大于等于 $ne不等于,等于就是直接写值对应了,或者$eq
db.student.find({"scope":{"$gte":"50"}})
9.逻辑运算 $and $or 多个则使用数组分开,and操作其实可以逗号分开些写多个 $nor取反操作
逻辑运算的条件是作为数组中放置对象的形式来完成条件的堆叠
10.$inc 给现有数字字段,增加值,加1,加2 相当于 +=操作,负数则相当于减操作
11.$set可以新添一个字段,也可以使用$unset来删除匹配字段
12 在使用java操作updateMany或one的操作的时候,更新的数据key需要使用$set否则报错。
若不是用$set则需要使用replaceOne方法来完成
13.条件查询可以使用过滤器Filters中的方法,也可以直接传入document来判断相等
14.分页操作与排序,find()方法后又skip(),limit()方法以及sort("排序对象",1升序,-1降序)方法,
前两者可以分页实现方法,还有一个最常用$natural为自然排序,即按存储顺序,需要写在sort函数中
db.arr.find().sort({$natural:1}) db.arr.find().sort({"age":1})
15.mongodb操作数组 $all ,$size ,$slice ,$elemMatch
使用 db.arr.find({"love":{"$all":["上海","北京"]}})找到同时有上海和北京的一项
其实内容可以只是一项也可以查询出来db.arr.find({"love":{"$all":["张三"]}}
使用索引查询,db.arr.find("love.1":"上海"),love里第二项为上海
查找喜欢两个城市 db.arr.find({"love":{"$size":2}})
db.arr.find({"love":{"slice":2}}) 从第三个截取 复数则倒着截取 也可以写成数组[1,2] 跳过1个截2个
当前套集合的时候,即[{},{}]这时候判断集合众的元素是否包含的时候使用$elemMatch
16.判断文档中是否存在某一项 使用$exists true要求存在 db.dept.find({"dname":{"$exists":true}})
17.$where过滤 db.dept.find("$where":"this.age>20") this是必须的表明遍历所有数据
18.模糊查询,需要使用mongo的正则来完成,普遍情况下使用最简单的正则,方式如下:
db.arr.find({"name":/三/i})没有引号,找到所有包含三的,加i表示无视大小写
其他m/x/s不常用,x/s属性使用到$regex,现查
19.$inc 增值 $set为设置为神马值 $push放入数组一个元素,一次只能放一个否则会放入数组中一个数组
$addToSet,加入一个元素,若存在则不添加 $pushAll,给数组添加多个元素
db.arr.update({"name":燕六},{"$pushAll":{"love":["长沙","武汉"]}})
$pop为删除数组元素,堆栈顺序删除 -1删除第一个 1删除最后一个
$pull删除指定名称数组元素同名的话删除多个 $pullAll为删除多个名称
$rename 修改字段名称 rename:{"旧的":"新的"}
20.删除表内容 db.dept.remove({条件},flag) 默认是删除满足条件的多个 flag = true/1为删除1条
db.dept.drop()文档删了
21.游标 find()方法就会返回类似于resultSet结果集
var result = db.dept.find();
while(result.hasNext) {
var doc = result.next();
print(doc.name);/printjson(doc);
}
22.索引操作 ensureIndex("age":1)插入索引 1升序,-1降序,getIndexes()查看集合索引
dropIndex()删除满足条件索引 dropIndexes()删除所有索引,除了默认的_id的索引
若声明了同时使用多个列的索引条件,需要使用hint({"age":"1","scope":-1})来完成条用该索引,
必须升降等和声明的索引一致才能执行。