Mongodb
Posted 混元天尊
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mongodb相关的知识,希望对你有一定的参考价值。
1、数据库的类型
关系型数据库(SQL):mysql Oracel DB2 sybase msSQL(微软旗下的SQL Server)
非关系型数据库(NoSQL):MongoDB
2、MongoDB存的是json格式的数据
info = [ {\'id\':1, \'name\':\'aa\' }, {\'id\':2, \'name\':\'bb\' }, ]
3、MySQL 和 MongoDB 中的不同
数据库类型 MySQL MongoDB
数据库 database db
数据表 table collections
数据行 row documents
字段 column filed
4、MongoDB 小操作
show dbs 查看所有已经写入磁盘的数据库
use + 数据库名 切换到当前数据库
show tables 查看当前数据库中所有的表
db 查看当前所使用的数据库
MongoDB中如果没有数据,如果直接使用 use + 随便输入 都会提示已经切换到这个数据库,但是show dbs 的时候是没有的,因为这个只是单纯的在内存中创建的,而没有写入磁盘。
***使用不存在的对象即创建该对象
5、MongoDB 的增、删、改、查
增:
db.表名.insert({})
官方推荐:
db.表名.insertOne({})
db.表名.insertMany([{},{},{}])
查:
db.表名.find() 查询所有的
db.表名.findOne() 查询单条数据
改:
db.表名.update({条件},{$set:{数据}})
官方推荐:
db.表名.updateOne({条件},{$set:{数据}}) 更新一条数据
db.表名.updateMany({条件},{$set:{数据}}) 更新所有数据
删:
db.表名.remove({条件})
官方推荐:
db.表名.deleteOne({条件}) 删除一条数据
db.表名.deleteMany({条件}) 删除符合条件的所有数据
清楚collections:
db.表名.drop()
6、$关键字
数学比符
$gt >
$gte >=
$lt <
$lte =<
$eq =
: =
7、修改器
{$set:{name:1}} 简单粗暴的修改,将所有的name修改成1
{$unset{name:1}} 简单粗暴的删除字段
db.user_info.updateOne({age:200},{$unset:{age:1}})
$inc 引用增加
$push : 它是用来对Array (list)数据类型进行 增加 新元素的,相当于我们大Python中 list.append() 方法
做一个小例子 :首先我们要先对原有数据增加一个Array类型的field:
使用update $set 的方法只能为Document中的第一条添加
使用updateMany $set 的方法 可以为所有满足条件的 Document 添加 "test_list" , 注意我这里的条件为空 " {} " 就算是为空,也要写上"{}" 记住记住记住
接下来我们就要队列表进行添加了: 将 "score" 为 100 的Document 中"test_list" 添加一个 6
$push 是在 Array(list) 的尾端加入一个新的元素 {$push : {"test_list" : 6}}
$pull : 有了$push 对Array类型进行增加,就一定有办法对其内部进行删减,$pull 就是指定删除Array中的某一个元素
做一个例子: 把我们刚才$push进去的 6 删除掉
问题来了,如果 Array 数据类型中 如果有 多个 6 怎么办呢?
全部删掉了.....
得出了一个结论,只要满足条件,就会将Array中所有满足条件的数据全部清除掉
$pop : 指定删除Array中的第一个 或 最后一个 元素
做个小例子: 删除"score" 等于 100 分 test_list 的最后一个元素
怎么删除第一个呢?
{$pop:{"test_list" : -1}} -1 代表最前面, 1 代表最后边 (这和我们大Python正好相反) 记住哦
$字符
db.user_info.updateOne({hobby:6},{$set:{\'hobby.$\':\'六\'}}) # 将hobby为6的改成‘六’,"hobby.$"加引号就会看作一个整体,.$是是用来找到那个6数据的索引。
object字典操作
db.user_info.updateOne({name:"200wansui"},{$inc:{"info.tizhong":-5}})
db.user_info.updateOne({name:"200wansui"},{$set:{"info.long":12.5}})
8、limit skip sort
limit
db.user_info.find({}).limit(5)
从当前位置选择5个数据
skip 跳过
db.user_info.find({}).skip(2)
从0开始跳过2条数据到当前位置
sort 排序
db.user_info.find({}).sort({\'id\':-1})
根据id进行排序,-1为正序 1为倒叙
limit + skip + sort
db.user_info.find({}).limit(5).skip(10)
db.user_info.find({}).limit(c).skip((p-1)*c)
db.user_info.find({}).limit(5).skip(5).sort({ id:-1 })
优先级最高的是 sort
其次优先为 skip
最低优先级 limit
以上是关于Mongodb的主要内容,如果未能解决你的问题,请参考以下文章
ios - Heroku 和 MongoDb 上的自定义解析服务器错误 3080:JSON 文本没有以数组或对象开头,并且允许未设置片段的选项
在 Spring MongoDB 的 ReplaceRoot 管道阶段使用 $mergeObjects