mongo 笔记
Posted missLiu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mongo 笔记相关的知识,希望对你有一定的参考价值。
mongo数据库的 增删改查
mongo数据库的 增删改查
注意事项
1.需要用管理员身份打开cmd控制台 然后输入: mongod --dbpath D:\\data\\db
mongod 开机
mongo 使用mongo
2.上面输入完以后窗口是不可以关的
3.要对mongo进行操作,需要再开一个cmd窗口,输入mongo回车 进入到mongo的环境中。
1.基本的一些操作
1.show dbs :列出所有的数据库
2.use 数据库名字
用来指定使用哪一个数据库; 当这个数据库名不存在的时候 就会新建这个数据库
3.db : 查看当前所在的数据库
db.表名
如果这个表名存在就使用这个表
如果这个表名不存在就会在当前的 数据库里面新建这个表名,也就是集合
4.cls :清屏幕
5.db.createCollection("表名字"):向当前数据库添加表
6.show tables:显示当前数据库下面的表
2.增
insert
例如:db.student.insert({ "name":"liuchun","age":18,"sex":"woman" }); 这里的student 就是集合,类似于关系型数据库中的表; 在这个集合里面有许多json; 如果在输入该命令的时候没有这个集合,就会自动新创建这个集合;
3.导入
mongoimport
例如:mongonimport --db test --collection restaurants --drop --file primer-mytest.json; --db test : 是指定想要往哪个数据库里面导入数据; --collection restaurants : 是指定想要往哪个集合中导入数据; --drop : 是把当前这个集合清空; dataset.json : 就是自己想要导入的数据文件名
4.删
drop
db.dropDatabase( ): 删除当前所在的数据库
db.表名.drop( ):删除这个指定表名的表
remove( )
db.chunchun.remove( )
db.student.remove({ "age":20},true)
删除在学生表中的年龄 等于20,的第一条数据; 如果不加第二个参数true, 就是把这个集合满足条件 的都删掉;
db.student.remove( )
把学生表里面的东西都删掉,但是这个 表还在;
5.改
update( )
update({修改的条件} , {修改器:{修改的内容}} , 第三个参数 , 第四个参数)
修改器:
参考网址:https://www.cnblogs.com/myrunning/p/5655615.html
$set 修改
数组修改器
$push 数组修改器
如果字段的值是数组类型; 要加入新值的话,就要用 这个;往数组末尾加入一个 元素;
$addToSet 数组修改器,作用 和$ne差不多,更方便点
$ne 数组修改器
在查询文档中,如果这个值不在 数组里面就加进去;如果已经存在 就不添加;
$each 要喝$addToSet组合使用; 可以一次插入几个不重复的值;
db.users.update({"_id":ObjectId(_id)} , {$addToSet:{ "emails": $each:["joe@example.com","joe@python.com","joe@php.com"]}})
$pop 根据key来决定; 是删除数组的尾端,还是 头部;
{$pop:{key:1}} 从数组末尾删除一个元素 {$pop:{key:-1}} 从数组头部删除一个元素
$pull 会删除指定的key的值
{$pull: { "name": ["liuchun" , "liunian"] } }
$unset 删除字段
$inc 相当于变成语言的“+=”
$rename 重命名某个列
如果在指令中没有修改器,就是用后面的数据去替换符合前面条件的 第一条数据
第三个参数
将这个参数设置为true,是存在就更新,不存在就插入; 设置为false就是当不存在的时候不插入,这个是默认的值
第四个参数
默认值是false,只更新找到的第一条数据 如果设置为true就把所有符合条件的记录都更新
在mongo中还支持使用js代码,包括申明变量循环等
例如:for(var i=0;i<10;i++){ db.chunchun.insert({name:“lala" , age: i})
6.查
find()
“$lt”、“$lte”、“$gt”、“$gte”
db.student.find( )
括号里面没有参数的话就是查找当前集合的所有数据
db.student.find( {"age":{$gt:20} }
查找学生表里面的所有年龄大于20的学生
db.student.find( {"age":{$gt:20} } .sort({ "age":1, "name":-1})
查找学生表里面的所有年龄大于20的学生; 并且进行排序,以年龄正序排,名字倒序排
当sort的key后面的值给1就是正序,反之就是倒序
or查询
$in
db.student.find( {"age":{ $in : [20,10,30] } } )
年龄在10,20,30中的学生
$or
db.student.find( { $or : [ {"age":"10"} , {"name":"la"} ] } )
年龄10岁 或者 名字是 la 的学生
$mod 取余
db.student.find( {"age":{ $mod : [20,3] } } )
取所有年龄取余20,等于3的学生
$not 取反
db.student.find( {"age":{ $not : [ { "age":10 } ] } } )
$exists 存在
db.student.find( {"age":{ $exists : true } } )
正则表达式
db.student.find( { name : /acme.*corp/i } )
i是区分大小写
$size 个数
find(参数1,参数2) 传两个参数的用法
db.student.find( { },{"age":1 , "name":1 }
第一个是要查找这个表的所有数据; 第二个参数是要查找后只返回age和name字段; 如果不加上“_id":0 ;这里返回的结果还是有_id字段
“age":1 表示要展示; 如果是"age":0 表示不展示
db.student.find( { },{"limit":1 , "skip":1 }
limit( 1 ) : 限制只选中一条数据
skip( 1 ): 是跳过第一条数据,从第二条开始读
一般用在分页的时候
7.导出
mongoexport : 可以把一个collecton到处成 Json格式或者Csv格式的文件。
mongoexport -d dbname -c collectionname -o file --type json/csv -f field 参数说明: -d :数据库名 -c :collection名 -o :输出的文件名 --type : 输出的格式,默认为json -f :输出的字段,如果-type为csv,则需要加上-f "字段名" 、示例: mongoexport -d mongotest -c users -o D:/users.json --type json -f "_id,user_id,user_name,age,status"
输入这个命令是要在开启了mongo 的服务,而且不是在mongo的环境下
8.导入
mongoimport -d dbname -c collectionname --file filename --headerline --type json/csv -f field 参数说明: -d :数据库名 -c :collection名 --type :导入的格式默认json -f :导入的字段名 --headerline :如果导入的格式是csv,则可以使用第一行的标题作为导入的字段 --file :要导入的文件 、示例: mongoimport -d mongotest -c users --file D:/users.json --type json
以上是关于mongo 笔记的主要内容,如果未能解决你的问题,请参考以下文章
Docker学习笔记——Mongo Dockerfile及容器运行