二、MongoDB基本操作及增删改查
基本操作
登陆数据库
1 | mongo |
查看数据库
语法
1 | show databases; |
选择数据库
1 | use 数据库名 |
如果切换到一个没有的数据库,例如use admin2
,那么会隐式创建这个数据库。(后期当该数据库有数据时,系统自动创建)
1 | use admin2 |
查看集合
1 | show collections |
创建集合
1 | db.createCollection('集合名') |
删除集合
1 | db.集合名.drop() |
删除数据库
- 通过
use
语法选择数据 - 通过
db.dropDataBase()
删除数据库
增删改查
C增
1 | db.集合名.insert(JSON数据) |
如果集合存在,那么直接插入数据。如果集合不存在,那么会隐式创建。
在test2数据库的c1集合中插入数据(姓名叫webopenfather年龄18岁)
1
2 use test2
db.c1.insert({uname:"webopenfather",age:18})
- 数据库和集合不存在都隐式创建
- 对象的键统一不加引号(方便看),但是查看集合数据时系统会自动加
- mongodb会给每条数据增加一个全球唯一的
_id
键
_id
键的组成自己增加
_id
可以,只需要给插入的JSON数据增加_id键即可覆盖(但实战强烈不推荐)
db.c1.insert({_id:1, uname:"webopenfather", age:18})
一次性插入多条数据
传递数据,数组中写一个个JSON数据即可。
1
2
3
4
5db.c1.insert([
{uname:"z3", age:3},
{uname:"z4", age:4},
{uname:"w5", age:5}
])快速插入10条数据
由于mongodb底层使用JS引擎实现的,所以支持部分js语法。因此:可以写for循环
1
2
3for (var i=1; i<=10; i++) {
db.c2.insert({uanme: "a"+i, age: i})
}
R查询文档
1 | db.集合名.find(条件[,查询的列]) |
条件 | 写法 |
---|---|
查询所有的数据 | {} 或者不写 |
查询age=6 的数据 | {age:6} |
既要age=6 又要性别=男 | {age:6,sex:'男'} |
查询的列(可选参数) | 写法 |
---|---|
查询全部列(字段) | 不写 |
只显示age列(字段) | {age:1} |
除了age列(字段)都显示 | {age:0} |
其他语法
1 | db.集合名.find({ |
运算符 | 作用 |
---|---|
$gt | 大于 |
$gte | 大于等于 |
$lt | 小于 |
$lte | 小于等于 |
$ne | 不等于 |
$in | in |
$nin | not in |
实例练习
查询所有数据
1
db.c1.find()
系统的
_id
无论如何都会存在查询age大于5的数据
1
db.c1.find({age:{$gt:5}})
查询年龄是5岁、8岁、10岁的数据
1
db.c2.find({age:{$in:[5,8,10]}})
只看年龄列,或者年龄以外的列
U修改文档
1 | db.集合名.update(条件,新数据[是否新增,是否修改多条,]) |
新数据
此数据需要使用修改器,如果不使用,那么会将新数据替换原来的数据。
1
db.集合名.update(条件,{修改器:{键:值}}[是否新增,是否修改多条,])
修改器 作用 $inc 递增 $rename 重命名列 $set 修改列值 $unset 删除列 是否新增
指条件匹配不到数据则插入(
true
是插入,false
否不插入默认)1
db.c3.update({uname:"zs30"},{$set:{age:30}},true)
是否修改多条
指将匹配成功的数据都修改(
true
是,false
否默认)1
db.c3.update({uname:"zs2"},{$set:{age:30}},false,true)
实例练习
准备工作
1 | use test2; |
将
{uname:"zs1"}
改为{uname:"zs2"}
1
db.c3.update({uname:"zs1"},{$set:{uname:"zs2"}})
给
{uname:"zs10"}
的年龄加2岁或减2岁1
db.c3.update({uname:"zs10"},{$inc:{age:2}})
递减只需要将2改为
-2
即可。综合练习
插入数据:
db.c4.insert( {uname:"神龙教主",age:888,who:"男",other:"非国人"});
需求:
uname
改成webopenfather
可以使用修改器
$set
age
增加111可以使用修改器
$inc
who
改字段sex
可以使用修改器
$rename
other
删除可以使用修改器
$unset
1
2
3
4
5
6db.c4.update({uname:'神龙教主'},
{$set:{uname:'webopenfather'},
$inc:{age:111},
$rename:{who:"sex"},
$unset:{other:true}
})
删除文档
1 | db.集合名.remove(条件[,是否删除一条]) |
是否删除一条
true:是(删除的数据为第一条)
false:否
1 | db.c3.remove({uname:"zs3"}) |
总结
高级开发攻城狮统称:所有数据库都需要增删改查CURD标识
MongoDB删除语法:remove
增Create
1 | db.集合名.insert(JSON数据) |
删Delete
1 | db.集合名.remove(条件 [,是否删除一条true是false否默认]) |
改Update
1 | db.集合名.update(条件, 新数据 [,是否新增,是否修改多条]) |
查Read
1 | db.集合名.find(条件 [,查询的列]) |