学习网页设计中遇到的心得体会,丹东seo优化效果费用,wampserver装wordpress,小米手机网站架构mongo式一款NOSQL数据库#xff0c;用于存储非结构化数据#xff0c;mongo是一种用于存储json的数据数据#xff0c;可以通过mongo提供的命令解析json获取想要的值。
数据模型
了解关系数据库会很熟悉database,table,row,column的概念#xff0c;分别是数据库#xff0c…mongo式一款NOSQL数据库用于存储非结构化数据mongo是一种用于存储json的数据数据可以通过mongo提供的命令解析json获取想要的值。
数据模型
了解关系数据库会很熟悉database,table,row,column的概念分别是数据库表行列所组成的二维表而在mongo中没有存储的是json在新的数据模型中主要数据模型有db数据库collection集合document文档field属性。 在mongo中一个db数据库存储多个collection一个collection的结构如下
// collection
{userId: 1,id: 1,title: delectus aut autem1,completed: false
}
{userId: 2,id: 2,title: delectus aut autem2,completed: false
}而每一个结构就是一个document文档
{userId: 2,id: 2,title: delectus aut autem2,completed: false
}其中的userId,id等都是field属性。
安装
主机安装
Ubuntu官方安装文档
依次按照官网的命令执行就可以了 左侧可以选安装版本尽量别选最新的哈小编在主机上安装时遇到了一些问题导致主机安装未成功。推荐使用docker 安装 安装完之后还需要安装mongo shell用于与mongo server交互通过命令行的方式操作数据官方下载地址。
mongo shell docs
如果安装没有修改配置文件使用mongosh会自动连接mongdb://localhost:27017如果修改了配置文件或者端口使用mongosh mongodb://localhost:27017编辑端口即可。 mongo会链接一个默认的数据库。 除了使用mongo shell外还可以使用mongo compass GUI工具下载地址
mongo compass 内部也集成来mongo sh在左下角
docker安装
docker pull mongodocker run --name mongo -id -P mongo使用docker安装看起来要方便很多安装成功映射到主机端口和mongo shell和mongo compass是一样的。
命令行操作
CURD
通过mongo shell是直接的操作方式具体的CURD操作如下
插入
db.collection.insertOne() db.collection.insertMany() 除了上述插入方式外还可以借助mongo compass 导入csv等数据。
更新数据 更新有三个参数分别是过滤器,更新内容,条件
db.inventory.updateOne({ item: paper },{$set: { size.uom: cm, status: P },$currentDate: { lastModified: true }}
)$set关键字用于更新具体内容$currentDate 关键字用于把lastModified字段设置为最近修改时间没有该字段就创建。 第一个参数是条件可以使用比较计算符。 删除数据 db.inventory.deleteMany({ status : A }) 删除也是匹配删除。 db.inventory.deleteOne( { status: D } ) 删除一个。 比较关键字都可以使用。 命令行查找
db.collection.find()
查询所有 inventory是collection名test是数据库名_id是每个collecttion的标识。 精确匹配
find内部可以使用{ field1: value1, ... }表示查询条件。 find会查询所有的document找出filed匹配的项。{}不使用关键字的情况下就是json数据该方法就是查询与其一直的数据。 IN查询
db.inventory.find( { status: { $in: [ A, D ] } } ) in可以使用or 替换 AND查询 条件一起写就是and。 比较查询
$lt是
模糊查询$regex
$regex是like。
$regex: ^p为前缀查询^起前后缀作用。
阶级查询
当然比较的关键字还有很多后续会介绍。这里介绍另一种查询方法.field.nestedField
db.inventory.find( { size.uom: in } )# 等价
db.inventory.find( { size: { w: 21, h: 14, uom: cm } } ) # 不好写这种方式使用多级阶层的查询。 匹配列表
Json的valu也是支持数组的也需要匹配列表查询。
精确匹配 只能拥有查询的列表元素。 子集匹配$all
db.inventory.find( { tags: { $all: [gel] } } ) 只要拥有查询条件的列表元素即可即查询条件是数据的子集。 单元素查询
db.inventory.find( { tags: red } ) 查询条件没有列表只有一个元素所有包含该元素的的数据都会被查询出来。 列表过滤查询
# dim_nml类型为[ 10, 15.25 ]
# 查找小于25的
db.inventory.find( { dim_cm: { $gt: 25 } } )# db.inventory.find( { dim_cm: { $gt: 15, $lt: 20 } } )
db.inventory.find( { dim_cm: { $gt: 15, $lt: 20 } } )# $elemMatch关键字用于多条件查询
db.inventory.find( { dim_cm: { $elemMatch: { $gt: 22, $lt: 30 } } } )在列表中也可以使用比较关键字用于过滤。 列表索引查询
db.inventory.find( { dim_cm.1: { $gt: 25 } } ) .1是列表的索引条件$gt是比较条件 列表长度查询
db.inventory.find( { tags: { $size: 3 } } ) $size关键字表示列表长度长度为3的将被查询出来。 列表中json元素查询
db.inventory.insertMany( [{ item: journal, instock: [ { warehouse: A, qty: 5 }, { warehouse: C, qty: 15 } ] },{ item: notebook, instock: [ { warehouse: C, qty: 5 } ] },{ item: paper, instock: [ { warehouse: A, qty: 60 }, { warehouse: B, qty: 15 } ] },{ item: planner, instock: [ { warehouse: A, qty: 40 }, { warehouse: B, qty: 5 } ] },{ item: postcard, instock: [ { warehouse: B, qty: 15 }, { warehouse: C, qty: 35 } ] }
]);该数据列表的数据元素也为json。 db.inventory.find( { instock: { warehouse: A, qty: 5 } } ) 如果列表内部也是json元素把列表当做一个document处理即可。 指定返回字段查询
直接使用find加条件查询返回所有field。在查询条件后可添加json字段返回指定字段。
db.inventory.find( { status: A }, { item: 1, status: 1 } )
甚至可以隐藏掉_id
db.inventory.find( { status: A }, { item: 1, status: 1, _id: 0 } ) 可以看出1是显示,0是隐藏。 也可以反着用排除返回 db.inventory.find( { status: A }, { status: 0, instock: 0 } )
多层次结构也要使用.来构造
db.inventory.find( { status: A }, { item: 1, status: 1, size.uom: 1 } )
存在数组的查询也是如此
shell db.inventory.find( { status: A }, { item: 1, status: 1, instock.qty: 1 } )
也可以同时使用比较查询
db.inventory.find( { status: A }, { item: 1, status: 1, instock: { $slice: -1 } } )
空值查询
mongo提供了null关键字用于空值查询。
db.inventory.insertMany([{ item: null },
])空值比较查询
db.inventory.find( { item: { $ne : null } } )有兴趣的话可以了解下$type和$exists关键字。
官方方法集合
上述只是介绍了一部分常用的方法更多一步官方方法集合
包含数据库方法查询删除更新等方法。