MongoDB数据库学习总结
十二月 16, 2018
-
分布式 & 基于文件存储 & 存储空间大 & 适用于频繁读写 & 不支持事务操作。
-
查看当前都有哪些数据库 :
show dbs
-
use xiaoliu
- 如果有xiaoliu这个数据库就进入,如果没有就创建这个数据库并进入这个数据库,如果xiaoliu这个数据库是空的,则
show dbs
还是看不到xiaoliu这个数据库
- 如果有xiaoliu这个数据库就进入,如果没有就创建这个数据库并进入这个数据库,如果xiaoliu这个数据库是空的,则
-
查看当前所在数据库 :
db
-
显示当前所在数据库中的所有集合 :
show collections
-
在当前数据库中新建一个user集合,并插入一条数据 :
db.user.insert({ ‘name’ : ’liupeijie’ })
-
列出user集合中的所有数据 :
db.user.find()
-
查询user集合中的第一条数据 :
db.user.findOne()
-
删除user集合中name为zhangsan的数据(有几条删几条) :
db.user.remove({ ‘name’ : ’zhangsan’ })
-
清空user集合中的所有数据 :
db.user.drop()
-
删除当前所在数据库 :
db.dropDatabase()
-
可执行js写的mongodb脚本文件 : load( ‘脚本文件地址‘ )
-
插入多条数据 :
db.user.insert([,,,])
-
更新数据 :
db.user.update({ 更新的条件 }, { 更新的内容 })
-
只修改一条数据中的一个指定字段而不影响其他字段 :
db.user.update( { ‘name’: ’liupeijie’ }, { $set{ ‘age’ : 18 } } )
-
只删除一条数据中一个指定字段而不影响其他字段 : db.user.update( { name: ’liupeijie’ }, { $unset: { hobby: ‘’ } } )```
-
upsert设置为true时,有这条记录就修改,没有这条记录就新增 :
db.user.update({name:’liupeijie’},{$set:{age:20}},{upsert:true})
-
查询到所有的数据进行修改,第三个参数指定每一条数据都做制定的更新操作,如果不写multi:true,那么只会给第一条数据更新 :
db.user.update({},{$set:{hobby:[]}},{multi:true})
-
$push的作用是给选中的数据增添一条字段, 这种push方式允许值重复, KaTeX parse error: Expected '}', got 'EOF' at end of input: …e({name:’小李’},{push:{hobby:’吃鸡’}})```
var hobbys = [‘吃鸡’,’叫醒’,’学习’];
-
db.user.update({name:’liupeijie’},{$addToSet:{hobby:{$each:hobbys}}});
// $each作用是推送数组的每一条 -
db.user.update({name:’liupeijie’},{$set:{‘hobby.0’:’健身’}});
// ‘hobby.0’是对数组第一个值的操作,以此类推 -
db.user.find({age:{$gte:20,$lte:25}});
// lte->小于等于 -
db.user.find({age:{$gte:20,$lte:25}},{name:true,age:true,_id:false});
// find()的第二个参数指定字段显不显示 -
db.user.find({age:{$in:[20,25]}},{name:true,age:true,_id:false});
// $in的作用不言而喻哈哈 -
db.user.find({$or:[{age:{$gte:30}},{‘pc.brand’:’IBM’}]},{name:true,age:true,_id:false});
// and必须同时满足,$not不满足 -
db.user.find({ hobby: ‘敲代码’ }, { name: true, age: true, _id: false });
// 注意和hobby:[‘敲代码’]的区别 -
db.user.find{hobby:{$all:[‘篮球’,’敲代码’]}};
// $all指爱好里面篮球和敲代码都得满足 -
db.user.find{hobby:{$in:[‘篮球’,’敲代码’]}};
// $in指爱好里面篮球和敲代码满足其一即可 -
db.user.find{hobby:{$size:3}};
// {$size:3}指有三个爱好即可(爱好的数组大小是3) -
db.user.find({},{name:true,age:true,_id:false}).limit(1).skip(0).sort({age:-1});
// 查找当前集合的所有数据按照指定格式输出,限制输出一条,跳过0条,按照年龄倒序排列 -
查询的数据量较大时( 百万级以上的数据量 ),可通过建索引的方式提高查询速度( 空间换时间 )
-
db.collections.ensureIndex({username:1});
-
db.collections.getIndexes();
// 获取当前的索引 -
db.collections.dropIndex({});
-