绍兴网站建设冯炳良,最新新闻国际新闻,新浪网站用什么语言做的,德州商城网站建设概论
出现背景#xff1a;MongoDB 是文档型数据库#xff0c;由于传统的关系型数据库#xff08;如 MySQL#xff09;#xff0c;在数据操作的“三高”需求以及应对 web 的网站需求面前显得有些吃力#xff0c;在此环境下 MongoDB 出世了 三高需求#xff1a; (1) 对数…概论
出现背景MongoDB 是文档型数据库由于传统的关系型数据库如 MySQL在数据操作的“三高”需求以及应对 web 的网站需求面前显得有些吃力在此环境下 MongoDB 出世了 三高需求 (1) 对数据库高并发读写的需求。 (2) 对海量数据的高效率存储和访问的需求。 (3) 对数据库的高可扩展性和高可用性的需求。 MongoDB 是 NoSQL 中最像 SQL 的非关系型数据库
NoSQL 非关系型数据库VS SQL关系型数据库 MongoDB SQLDatabaseDatabaseTableCollectionRowDocumentColumnFieldKey-ValueField : FieldValueIndexIndex_IDautoID多表连接嵌入文档
MongoDB 默认为每个文档设置了一个主键 _ID默认下它是 Objectid 对象它在集合中是唯一标识的
MongoDB 有如下三个自带的数据库
admin 数据库用于存储用户和角色等信息local 数据库用来存储副本集的配置信息数据不能被复制到其它节点config 数据库在分片设置时存储分片的相关信息
数据库自定义命名规范不能为空或有特殊符合及以数字开头且对大小写敏感长度最多为 64B如果用户不定义自己的数据库名称则默认操作数据库名称为 test
MongoDB 支持的数据结构非常松散其记录是一个文档由键值对 field:value 组成文档类似于 JSON 对象
数据库管理
创建数据库如果此数据库已存在则切换到指定数据库而实际上只有向其插入文档时才会真正创建
use DATABASE_NAME显示数据库
show dbs删除数据库
db.dropDatabase()
集合管理
创建集合
db.createCollection(name, options)查看集合
show collections 或 show tables删除集合
db.COLLECTION_NAME.drop() 创建集合的注释 name要创建的集合名称options可选项 capped是否是固定大小集合autoIndexId是否自动在 _ID 键名上创建索引size定义固定集合的大小单位是 千字节Kbytesmax固定集合文档的最大数量 文档管理
插入文档
db.COLLECTION_NAME.insert(document_name)单插入文档
db.COLLECTION_NAME.insertOne(document_name)多插入文档
db.COLLECTION_NAME.insertMany([document_name1, document_name2, ···], {writeConcern: 1|0, ordered: true|false})更新文档
db.COLLECTION_NAME.update(query, update, {upset: boolean, multi: boolean, writeConcern: document})db.COLLECTION_NAME.save(document)删除文档
db.COLLECTION_NAME.remove()db.COLLECTION_NAME.deleteOne()db.COLLECITON_NAME.deleteMany()查询文档
db.COLLECTION_NAME.find()db.COLLECTION_NAME.find().pretty()限定查询数量
db.COLLECTION_NAME.find().limit(Num)查询结果排序
db.COLLECTION_NAME.find().sort({KEY:1|-1}) 多插入文档的注释 writeConcern指定写入策略1 要求确认写为 0 则不要求ordered指定是否按顺序写入true 要求按顺序写入为 false 则不要求 更新文档的注释 query更新的条件/对象update更新的对象和更新的操作符 {$set{fieldvalue}} 把文档中某个 field 的值设置为 value{$inc{fieldvalue}} 把文档中某个数值型的 field 增加一次 value 值{$unset{field0}} 删除某个 field{$push{fieldvalue}} 把 value 追加到数组 field 中如果数组 field 不存在则会自动插入一个数组类型{$addToSet{fieldvalue}} 加一个值到数组 field 中而且只有当这个值在数组中不存在时才增加{$pull{fieldvalue}} 从数组 field 中删除一个等于 value 的值{$rename{old_field_namenew_field_name}} 对 field 进行重命名upsert可选参数如果不存在 update 的记录是否插入新文档true为插入默认是false不插入multi可选参数默认是 false只更新找到的第一条记录如果这个参数为 true就把按条件查出来的多条记录全部更新writeConcern可选参数抛出异常的级别 文档聚合
db.COLLECTION_NAME.aggregate( [{$pipeline1}, {$pipeline2}, {$pipeline3}···] )
其中的 $pipeline1 等都被称作管道命令
$match指定条件过滤$group指定键分组 $sum求和$avg平均$min最小值$max最大值$push将结果插到数组中且去掉重复值$addToSet将结果插入到数组$first返回第一个文档数据$last返回最后一个文档数据$project投影 $limit限定$skip跳过unwind分解sort排序 MongoDB——》聚合查询project、match、limit、skip、unwind、group、sort_mongo match limit-CSDN博客
文档索引
db.COLLECTION_NAME.createIndex(keys, options)
查看索引
db.COLLECTION_NAME.getIndexes()查看索引大小
db.COLLECTION_NAME.totalIndexSize()删除指定索引
db.COLLECTION_NAME.dropIndex(索引名称)删除所有索引
db.COLLECTION_NAME.dropIndexes()