MongoDB简介
MongoDB使用C++语言编写的非关系型数据库。特点是高性能、易部署、易使用,存储数据十分方便
主要特征
SQL和NoSQL对比
对比项 | win10安装
下载:
配置变量:安装路径为D:MongoDB,将D:MongoDBbin目录加入环境变量
net start MongoDB
net stop MongoDB
mongod.exe
mongo.exe
MongoDB支持的数据类型:
? 字符串?- 这是用于存储数据的最常用的数据类型。MongoDB中的字符串必须为UTF-8-- 此类型用于存储布尔值(true?/-/最大键?------------ 此数据类型用于存储正则表达式。
数据库操作
use userinfo
<span style="color: #008000;">#
<span style="color: #008000;">查
show dbs <span style="color: #008000;">#<span style="color: #008000;"> 查看所有,databases的简写
<span style="color: #008000;">#
<span style="color: #008000;">删
use config <span style="color: #008000;">#<span style="color: #008000;"> 先切换到要删的库下
db.dropDatabase() <span style="color: #008000;">#<span style="color: #008000;"> 删除当前库
注意:新创建的数据库中没有数据,直接查看所有数据库是查看不到的, 需要往数据库中插入数据后才能查看
集合操作
use database1
db.table1.insert({:1})
db.table2.insert({:2})
<span style="color: #008000;">#
<span style="color: #008000;"> 查
show tables <span style="color: #008000;">#<span style="color: #008000;"> 查看所有集合,此时有table1,table2
<span style="color: #008000;">#
<span style="color: #008000;">删
db.table1.drop() <span style="color: #008000;">#<span style="color: #008000;"> 删除table1,此时只剩table2了
文档操作
增
注意:没有指定_id则默认ObjectId,_id不能重复,且在插入后不可变
user0=::10:[,,::db.test.insert(user0) <span style="color: #008000;">#<span style="color: #008000;"> 插入数据
db.test.find() <span style="color: #008000;">#<span style="color: #008000;"> 查看数据
user1=:1::11:[,,:user2=<span style="color: #000000;">{
<span style="color: #800000;">"<span style="color: #800000;">_id<span style="color: #800000;">":2<span style="color: #000000;">,<span style="color: #800000;">"<span style="color: #800000;">name<span style="color: #800000;">":<span style="color: #800000;">"<span style="color: #800000;">小美<span style="color: #800000;">"<span style="color: #000000;">,<span style="color: #800000;">"<span style="color: #800000;">age<span style="color: #800000;">":12<span style="color: #000000;">,<span style="color: #800000;">'<span style="color: #800000;">hobbies<span style="color: #800000;">':[<span style="color: #800000;">'<span style="color: #800000;">唱歌<span style="color: #800000;">',<span style="color: #800000;">'<span style="color: #800000;">跑步<span style="color: #800000;">'<span style="color: #000000;">],<span style="color: #800000;">'<span style="color: #800000;">city<span style="color: #800000;">':<span style="color: #800000;">'<span style="color: #800000;">hebei<span style="color: #800000;">'<span style="color: #000000;">
}
}
user3
=<span style="color: #000000;">{
<span style="color: #800000;">"<span style="color: #800000;">_id<span style="color: #800000;">":3<span style="color: #000000;">,<span style="color: #800000;">"<span style="color: #800000;">name<span style="color: #800000;">":<span style="color: #800000;">"<span style="color: #800000;">小强<span style="color: #800000;">"<span style="color: #000000;">,<span style="color: #800000;">"<span style="color: #800000;">age<span style="color: #800000;">":13<span style="color: #000000;">,<span style="color: #800000;">'<span style="color: #800000;">打游戏<span style="color: #800000;">'<span style="color: #000000;">],<span style="color: #800000;">'<span style="color: #800000;">city<span style="color: #800000;">':<span style="color: #800000;">'<span style="color: #800000;">heibei<span style="color: #800000;">'<span style="color: #000000;">
}
}
user4
=<span style="color: #000000;">{
<span style="color: #800000;">"<span style="color: #800000;">_id<span style="color: #800000;">":4<span style="color: #000000;">,<span style="color: #800000;">"<span style="color: #800000;">name<span style="color: #800000;">":<span style="color: #800000;">"<span style="color: #800000;">小帅<span style="color: #800000;">"<span style="color: #000000;">,<span style="color: #800000;">"<span style="color: #800000;">age<span style="color: #800000;">":14<span style="color: #000000;">,<span style="color: #800000;">'<span style="color: #800000;">看书<span style="color: #800000;">',<span style="color: #800000;">'<span style="color: #800000;">跑步<span style="color: #800000;">',<span style="color: #800000;">'<span style="color: #800000;">爬山<span style="color: #800000;">'<span style="color: #000000;">],<span style="color: #800000;">'<span style="color: #800000;">city<span style="color: #800000;">':<span style="color: #800000;">'<span style="color: #800000;">BJ<span style="color: #800000;">'<span style="color: #000000;">
}
}
user5
=<span style="color: #000000;">{
<span style="color: #800000;">"<span style="color: #800000;">_id<span style="color: #800000;">":5<span style="color: #000000;">,<span style="color: #800000;">"<span style="color: #800000;">name<span style="color: #800000;">":<span style="color: #800000;">"<span style="color: #800000;">二蛋<span style="color: #800000;">"<span style="color: #000000;">,<span style="color: #800000;">"<span style="color: #800000;">age<span style="color: #800000;">":15<span style="color: #000000;">,<span style="color: #800000;">'<span style="color: #800000;">看书<span style="color: #800000;">'<span style="color: #000000;">,],<span style="color: #800000;">'<span style="color: #800000;">city<span style="color: #800000;">':<span style="color: #800000;">'<span style="color: #800000;">henan<span style="color: #800000;">'<span style="color: #000000;">
}
}
db.user.insertMany([user1,user2,user3,user4,user5])
查
比较运算符:{key:value}代表什么等于什么,"$ne","$gt","$lt","gte","lte",其中"$ne"能用于所有数据类型
db.user.find({:})
db.user.find({:{:}})
db.user.find({:{:2}}) 2 的数据
db.user.find({:{:3}})
db.user.find({:{:2,}}) =2 的数据
db.user.find({:{:2}})
逻辑运算符:字典中逗号分隔的多个条件是and关系,"$or"的条件放到[]内
db.user.find({:{:2,:4}}) = 2 and id < 4
db.user.find({:{:2},:{:14}}) = 2 and age < 14;
<span style="color: #008000;">#
<span style="color: #008000;"> 查询 id >= 5 or name = "小花"
<span style="color: #000000;">db.user.find({
<span style="color: #800000;">"<span style="color: #800000;">$or<span style="color: #800000;">"<span style="color: #000000;">:[
{<span style="color: #800000;">'<span style="color: #800000;">_id<span style="color: #800000;">':{<span style="color: #800000;">"<span style="color: #800000;">$gte<span style="color: #800000;">":5<span style="color: #000000;">}},{<span style="color: #800000;">"<span style="color: #800000;">name<span style="color: #800000;">":<span style="color: #800000;">"<span style="color: #800000;">小花<span style="color: #800000;">"<span style="color: #000000;">}
]
})
db.user.find({
<span style="color: #800000;">'<span style="color: #800000;">_id<span style="color: #800000;">':{<span style="color: #800000;">"<span style="color: #800000;">$mod<span style="color: #800000;">":[2,1]}}) <span style="color: #008000;">#<span style="color: #008000;"> 查询 id/2=1 的数据(取余)
db.user.find({<span style="color: #800000;">'<span style="color: #800000;">_id<span style="color: #800000;">':{<span style="color: #800000;">"<span style="color: #800000;">$not<span style="color: #800000;">":{<span style="color: #800000;">"<span style="color: #800000;">$mod<span style="color: #800000;">":[2,1]}}}) <span style="color: #008000;">#<span style="color: #008000;"> # 查询 id/2!=1 的数据
成员运算符:"$in","$nin"
db.user.find({:{:[11,12,13]}})
db.user.find({:{:[‘小美’,]}})
正则匹配:/正则表达/i
db.user.find({:/^小.*?/i})
取指定字段:1代表显示,0代表不显示
db.user.find({:3},{nameage
db.user.find({:3},{:0})
db.user.find({:<span style="color: #008000;">#<span style="color: #008000;"> 查看既有唱歌爱好又有跳舞爱好的人
<span style="color: #000000;">db.user.find({
<span style="color: #800000;">'<span style="color: #800000;">hobbies<span style="color: #800000;">'<span style="color: #000000;">:{
<span style="color: #800000;">"<span style="color: #800000;">$all<span style="color: #800000;">":[<span style="color: #800000;">'<span style="color: #800000;">唱歌<span style="color: #800000;">',<span style="color: #800000;">'<span style="color: #800000;">跳舞<span style="color: #800000;">'<span style="color: #000000;">]
}
})
<span style="color: #008000;">#<span style="color: #008000;"> 查看第4个爱好为爬山的人
db.user.find({<span style="color: #800000;">"<span style="color: #800000;">hobbies.4<span style="color: #800000;">":<span style="color: #800000;">'<span style="color: #800000;">爬山<span style="color: #800000;">'<span style="color: #000000;">})
<span style="color: #008000;">#<span style="color: #008000;"> 查看所有人最后两个爱好
db.user.find({},{<span style="color: #800000;">'<span style="color: #800000;">hobbies<span style="color: #800000;">':{<span style="color: #800000;">"<span style="color: #800000;">$slice<span style="color: #800000;">":-2},<span style="color: #800000;">"<span style="color: #800000;">age<span style="color: #800000;">":0,<span style="color: #800000;">"<span style="color: #800000;">_id<span style="color: #800000;">":0,<span style="color: #800000;">"<span style="color: #800000;">name<span style="color: #800000;">":0,<span style="color: #800000;">"<span style="color: #800000;">addr<span style="color: #800000;">"<span style="color: #000000;">:0})
<span style="color: #008000;">#<span style="color: #008000;"> 查看所有人的第2个到第3个爱好
db.user.find({},{<span style="color: #800000;">'<span style="color: #800000;">hobbies<span style="color: #800000;">':{<span style="color: #800000;">"<span style="color: #800000;">$slice<span style="color: #800000;">":[2,3]},<span style="color: #800000;">"<span style="color: #800000;">addr<span style="color: #800000;">":0})
排序:sort(1代表升序,2代表降序)
db.user.find().sort({:1,})
db.user.find().sort({:-1,:1}
分页:limit代表取多少个document,skip代表跳过前多少个document
db.user.find().sort({:1}).limit(1).skip(2)
db.user.count({:{:13}}) 13 的个数
db.user.find({:{:13}}).count()
db.t2.find({<span style="color: #008000;">#<span style="color: #008000;"> 查找所有
db.user.find() <span style="color: #008000;">#<span style="color: #008000;"> 等同于db.user.find({})
<span style="color: #000000;">db.user.find().pretty()
<span style="color: #008000;">#<span style="color: #008000;"> 查找一个,与find用法一致,只是只取匹配成功的第一个
db.user.findOne({<span style="color: #800000;">"<span style="color: #800000;">_id<span style="color: #800000;">":{<span style="color: #800000;">"<span style="color: #800000;">$gt<span style="color: #800000;">":3}})
改
update() 方法用于更新已存在的文档。语法格式如下:
query : 相当于where条件。
update : update的对象和一些更新的操作符(如$,$inc...等,相当于set后面的
upsert : 可选,默认为false,代表如果不存在update的记录不更新也不插入,设置为true代表插入。
multi : 可选,默认为false,代表只更新找到的第一条记录,设为true,代表更新找到的全部记录。
writeConcern :可选,抛出异常的级别。
更新操作是不可分割的:若两个更新同时发送,先到达服务器的先执行,然后执行另外一个,不会破坏文档。
<span style="color: #800000;">"""
一种简单的更新就是用一个新的文档完全替换匹配的文档。这适用于大规模迁移的情况。例如:
db.user.update({:12},{:,:3
<span style="color: #008000;">#
<span style="color: #008000;"> 重新赋值
var obj=db.user.findOne({<span style="color: #800000;">"<span style="color: #800000;">_id<span style="color: #800000;">":2<span style="color: #000000;">})
obj.username
=obj.name+<span style="color: #800000;">'<span style="color: #800000;">NB<span style="color: #800000;">'<span style="color: #000000;">
obj.hobbies_count++<span style="color: #000000;">
delete obj.age
db.user.update({
<span style="color: #800000;">"<span style="color: #800000;">_id<span style="color: #800000;">":2},obj)
通常文档只会有一部分需要更新。可以使用原子性的更新修改器,指定对文档中的某些字段进行更新。更新修改器是种特殊的键,用来指定复杂的更新操作,比如修改、增加后者删除
db.user.update({:2},{:{:<span style="color: #008000;">#<span style="color: #008000;"> 没有匹配成功则新增一条{"upsert":true}
db.user.update({<span style="color: #800000;">'<span style="color: #800000;">_id<span style="color: #800000;">':6},{<span style="color: #800000;">"<span style="color: #800000;">$set<span style="color: #800000;">":{<span style="color: #800000;">"<span style="color: #800000;">name<span style="color: #800000;">":<span style="color: #800000;">"<span style="color: #800000;">小美<span style="color: #800000;">",<span style="color: #800000;">"<span style="color: #800000;">age<span style="color: #800000;">":18}},{<span style="color: #800000;">"<span style="color: #800000;">upsert<span style="color: #800000;">"<span style="color: #000000;">:true})
<span style="color: #008000;">#<span style="color: #008000;"> 默认只改匹配成功的第一条,{"multi":改多条}
db.user.update({<span style="color: #800000;">'<span style="color: #800000;">_id<span style="color: #800000;">':{<span style="color: #800000;">"<span style="color: #800000;">$gt<span style="color: #800000;">":4}},{<span style="color: #800000;">"<span style="color: #800000;">$set<span style="color: #800000;">":{<span style="color: #800000;">"<span style="color: #800000;">age<span style="color: #800000;">":18<span style="color: #000000;">}})
db.user.update({<span style="color: #800000;">'<span style="color: #800000;">_id<span style="color: #800000;">':{<span style="color: #800000;">"<span style="color: #800000;">$gt<span style="color: #800000;">":4}},{<span style="color: #800000;">"<span style="color: #800000;">$set<span style="color: #800000;">":{<span style="color: #800000;">"<span style="color: #800000;">age<span style="color: #800000;">":28}},{<span style="color: #800000;">"<span style="color: #800000;">multi<span style="color: #800000;">"<span style="color: #000000;">:true})
<span style="color: #008000;">#<span style="color: #008000;"> 修改内嵌文档,把名字为alex的人所在的地址国家改成Japan
db.user.update({<span style="color: #800000;">'<span style="color: #800000;">name<span style="color: #800000;">':<span style="color: #800000;">"<span style="color: #800000;">小美<span style="color: #800000;">"},{<span style="color: #800000;">"<span style="color: #800000;">$set<span style="color: #800000;">":{<span style="color: #800000;">"<span style="color: #800000;">addr.country<span style="color: #800000;">":<span style="color: #800000;">"<span style="color: #800000;">Japan<span style="color: #800000;">"<span style="color: #000000;">}})
<span style="color: #008000;">#<span style="color: #008000;"> 把名字为小美的人的地2个爱好改成shopping
db.user.update({<span style="color: #800000;">'<span style="color: #800000;">name<span style="color: #800000;">':<span style="color: #800000;">"<span style="color: #800000;">小美<span style="color: #800000;">"},{<span style="color: #800000;">"<span style="color: #800000;">$set<span style="color: #800000;">":{<span style="color: #800000;">"<span style="color: #800000;">hobbies.2<span style="color: #800000;">":<span style="color: #800000;">"<span style="color: #800000;">shopping<span style="color: #800000;">"<span style="color: #000000;">}})
<span style="color: #008000;">#<span style="color: #008000;"> 删除小美的爱好,$unset
db.user.update({<span style="color: #800000;">'<span style="color: #800000;">name<span style="color: #800000;">':<span style="color: #800000;">"<span style="color: #800000;">小美<span style="color: #800000;">"},{<span style="color: #800000;">"<span style="color: #800000;">$unset<span style="color: #800000;">":{<span style="color: #800000;">"<span style="color: #800000;">hobbies<span style="color: #800000;">":<span style="color: #800000;">""}})
增加和减少:$inc
:{:1
:{:-5
添加删除数组内元素:$push,$pop,$pull
<span style="color: #008000;">#
<span style="color: #008000;"> 为名字为张三的人添加一个爱好read
db.user.update({<span style="color: #800000;">"<span style="color: #800000;">name<span style="color: #800000;">":<span style="color: #800000;">"<span style="color: #800000;">张三<span style="color: #800000;">"},{<span style="color: #800000;">"<span style="color: #800000;">$push<span style="color: #800000;">":{<span style="color: #800000;">"<span style="color: #800000;">hobbies<span style="color: #800000;">":<span style="color: #800000;">"<span style="color: #800000;">read<span style="color: #800000;">"<span style="color: #000000;">}})
<span style="color: #008000;">#<span style="color: #008000;"> 为名字为张三的人一次添加多个爱好tea,dancing
db.user.update({<span style="color: #800000;">"<span style="color: #800000;">name<span style="color: #800000;">":<span style="color: #800000;">"<span style="color: #800000;">张三<span style="color: #800000;">"},{<span style="color: #800000;">"<span style="color: #800000;">$push<span style="color: #800000;">"<span style="color: #000000;">:{
<span style="color: #800000;">"<span style="color: #800000;">hobbies<span style="color: #800000;">":{<span style="color: #800000;">"<span style="color: #800000;">$each<span style="color: #800000;">":[<span style="color: #800000;">"<span style="color: #800000;">tea<span style="color: #800000;">",<span style="color: #800000;">"<span style="color: #800000;">dancing<span style="color: #800000;">"<span style="color: #000000;">]}
}})
<span style="color: #008000;">#<span style="color: #008000;"> 按照位置且只能从开头或结尾删除元素:$pop
<span style="color: #008000;">#<span style="color: #008000;"> {"$pop":{"key":1}} 从数组末尾删除一个元素
db.user.update({<span style="color: #800000;">"<span style="color: #800000;">name<span style="color: #800000;">":<span style="color: #800000;">"<span style="color: #800000;">yuanhao<span style="color: #800000;">"},{<span style="color: #800000;">"<span style="color: #800000;">$pop<span style="color: #800000;">"<span style="color: #000000;">:{
<span style="color: #800000;">"<span style="color: #800000;">hobbies<span style="color: #800000;">":1<span style="color: #000000;">}
})
<span style="color: #008000;">#<span style="color: #008000;"> {"$pop":{"key":-1}} 从头部删除
db.user.update({<span style="color: #800000;">"<span style="color: #800000;">name<span style="color: #800000;">":<span style="color: #800000;">"<span style="color: #800000;">yuanhao<span style="color: #800000;">"},{<span style="color: #800000;">"<span style="color: #800000;">$pop<span style="color: #800000;">"<span style="color: #000000;">:{
<span style="color: #800000;">"<span style="color: #800000;">hobbies<span style="color: #800000;">":-1<span style="color: #000000;">}
})
<span style="color: #008000;">#<span style="color: #008000;"> 按照条件删除元素,:"$pull" 把符合条件的统统删掉,而$pop只能从两端删
db.user.update({<span style="color: #800000;">'<span style="color: #800000;">addr.country<span style="color: #800000;">':<span style="color: #800000;">"<span style="color: #800000;">China<span style="color: #800000;">"},{<span style="color: #800000;">"<span style="color: #800000;">$pull<span style="color: #800000;">"<span style="color: #000000;">:{
<span style="color: #800000;">"<span style="color: #800000;">hobbies<span style="color: #800000;">":<span style="color: #800000;">"<span style="color: #800000;">read<span style="color: #800000;">"<span style="color: #000000;">}
},{
<span style="color: #800000;">"<span style="color: #800000;">multi<span style="color: #800000;">"<span style="color: #000000;">:true
}
避免添加重复:$addToSet
db.urls.insert({:1,db.urls.update({<span style="color: #800000;">"<span style="color: #800000;">_id<span style="color: #800000;">":1},{<span style="color: #800000;">"<span style="color: #800000;">$addToSet<span style="color: #800000;">":{<span style="color: #800000;">"<span style="color: #800000;">urls<span style="color: #800000;">":<span style="color: #800000;">'<span style="color: #800000;">http://www.baidu.com<span style="color: #800000;">'<span style="color: #000000;">}})
db.urls.update({<span style="color: #800000;">"<span style="color: #800000;">_id<span style="color: #800000;">":1},{<span style="color: #800000;">"<span style="color: #800000;">$addToSet<span style="color: #800000;">":{<span style="color: #800000;">"<span style="color: #800000;">urls<span style="color: #800000;">":<span style="color: #800000;">'<span style="color: #800000;">http://www.baidu.com<span style="color: #800000;">'<span style="color: #000000;">}})
db.urls.update({<span style="color: #800000;">"<span style="color: #800000;">_id<span style="color: #800000;">":1<span style="color: #000000;">},{
<span style="color: #800000;">"<span style="color: #800000;">$addToSet<span style="color: #800000;">"<span style="color: #000000;">:{
<span style="color: #800000;">"<span style="color: #800000;">urls<span style="color: #800000;">"<span style="color: #000000;">:{
<span style="color: #800000;">"<span style="color: #800000;">$each<span style="color: #800000;">"<span style="color: #000000;">:[
<span style="color: #800000;">'<span style="color: #800000;">http://www.baidu.com<span style="color: #800000;">'<span style="color: #000000;">,<span style="color: #800000;">'<span style="color: #800000;">http://www.baidu.com<span style="color: #800000;">'<span style="color: #000000;">,<span style="color: #800000;">'<span style="color: #800000;">http://www.xxxx.com<span style="color: #800000;">'<span style="color: #000000;">
]
}
}
}
)
db.user.update({:5:{:[,,:-2<span style="color: #008000;">#<span style="color: #008000;"> 了解:排序The $sort element value must be either 1 or -1"
db.user.update({<span style="color: #800000;">"<span style="color: #800000;">_id<span style="color: #800000;">":5<span style="color: #000000;">},<span style="color: #800000;">"<span style="color: #800000;">$slice<span style="color: #800000;">":-1<span style="color: #000000;">,<span style="color: #800000;">"<span style="color: #800000;">$sort<span style="color: #800000;">":-1<span style="color: #000000;">
}
}
})
<span style="color: #008000;">#<span style="color: #008000;"> 注意:不能只将"$slice"或者"$sort"与"$push"配合使用,且必须使用"$eah"
删
删除一个:deleteOne
db.user.deleteOne({ : 8 })
删除多个:deleteMany
db.user.deleteMany( {: } )
删除全部:deleteMany
db.user.deleteMany({})
进阶操作:聚合(待续...)
python操作MongoDB:pymongo模块(待续...)
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!