美文网首页
day07 MongoDB基础语法

day07 MongoDB基础语法

作者: LittleBear_6c91 | 来源:发表于2019-04-16 20:59 被阅读0次

    MongoDB
    NoSQL,全称是”Not Only Sql”,指的是⾮非关系型的数据库。
    非关系型数据库主要有这些特点:非关系型的、分布式的、开源的、水平可扩展的。
    NoSQL 的拥护者们提倡运用非关系型的数据存储,通常的应用如:模式自由、支持简易易复制、简
    单的 API、⼤大容量量数据等。
    MongoDB 是⼀一个介于关系数据库和⾮非关系数据库之间的产品,是⾮非关系数据库当中功能最丰
    富,最像关系数据库的。
    MongoDB最⼤大的特点:它⽀支持的查询语⾔言⾮非常强⼤大,其语法有点类似于⾯面向对象的查询语⾔言,
    ⼏几乎可以实现类似关系数据库单表查询的绝⼤大部分功能。它是⼀一个⾯面向集合的,模式⾃自由的⽂文
    档型数据库。
    1、 ⾯面向集合(Collection-Orented)
    意思是数据被分组存储在数据集中, 被称为⼀一个集合(Collenction)。每个集合在数据库中 都有
    ⼀一个唯⼀一的标识名,并且可以包含⽆无限数⽬目的⽂文档。集合的概念类似关系型数据库(RDBMS)⾥里里
    的表(table),不不同的是它不不需要定义任何模式(schema)。
    2、 模式⾃自由(schema-free)
    存储在 MongoDB 数据库中的⽂文件,我们不不需要知道它的任何结构定义。提了了这 么多次”⽆无模
    式”或”模式⾃自由”,它到是个什什么概念呢?例例如,下⾯面两个记录可以存在于同⼀一个集合⾥里里⾯面:
    {“welcome” : “Beijing”}
    {“age” : 28}
    3、 ⽂文档型 意思是我们存储的数据是键-值对的集合,键是字符串串,值可以是数据类型集合⾥里里的任
    意类型, 包括数组和⽂文档. ⽂文件存储格式为 BSON(⼀一种 JSON 的扩展)
    适⽤用场景
    1 ⽹网站数据:MongoDB ⾮非常适合实时的插⼊入,更更新与查询,并具备⽹网站实时数据存储所需的复制
    及⾼高度伸缩性
    2 缓存:由于性能很⾼高,MongoDB 也适合作为信息基础设施的缓存层。在系统重启之后, 由
    MongoDB 搭建的持久化缓存层可以避免下层的数据源过载
    3 ⼤大尺⼨寸,低价值的数据:使⽤用传统的关系型数据库存储⼀一些数据时可能会⽐比较昂贵,在此之前,很
    多时候程序员往往会选择传统的⽂文件进⾏行行存储
    4 ⾼高伸缩性的场景:MongoDB ⾮非常适合由数⼗十或数百台服务器器组成的数据库。MongoDB的路路
    线图中已经包 对 MapReduce 引擎的内置⽀支持
    5 ⽤用于对象及 JSON 数据的存储:MongoDB 的 BSON 数据格式⾮非常适合⽂文档化格式的存储及
    查询
    mongodb配置⽂文件
    mongod.conf
    dbpath=/Users/carmack/data/mongo
    启动mongod
    ./mongod -f mongod.cnf
    mongo客户端
    进⼊入客户端
    ./mongo
    查看数据库命令
    show dbs
    打开数据库
    use taobao
    查看集合(对应mysql table)
    show collections
    ⽂文档:⽂文档(Document)是MongodDB中的核⼼心概念,他是MongoDB逻辑存储的最⼩小基本单
    元, 对应mysql记录
    集合:多个⽂文档组成的集合 对应mysql table
    数据库:多个集合组成的数据库 对应mysql database
    MongodDB的数据类型是:BSON的数据类型
    BSON:是Binary JSON是⼆二进制的格式
    创建数据库
    use newdb1
    show dbs
    数据库并没有添加,当我们在给数据库中的集合插⼊入⼀一条⽂文档的时候就会⾃自动创建⼀一条⽂文档、⼀一个集合、⼀一
    个数据库。
    db.users.insert({"name": 'carmack'})
    show colletions;
    插⼊入⼀一条数据
    db.users.insert({"uid":2,"uname":"carmack","isvip":true,"sex":null,"favorite":
    ["apple","banana",1,2,3,4,5],"regtime":new Date()})
    查询数据
    db.users.find()
    db.users.findOne({"uid":2})
    删除数据
    db.users.remove({"uid":2})
    清空集合
    db.users.remove({})
    删除集合
    db.users.drop()
    更更新⽂文档
    第⼀一个⽂文档为查询的⽂文档,第⼆二个⽂文档为修改为什什么⽂文档, 后⾯面的⽂文档会覆盖我们要修改⽂文档的整个内容
    db.users.update({"uid":2},{"uname":"jon"})
    使⽤用修改器器inc更更新 对uid为2的⽤用户增加100块钱⼯工资 db.users.update({"uid":2},{"inc":{"salary":100}})
    减100

    db.users.update({"uid":2},{"inc":{"salary":-100}}) 添加⼀一个字段set修改器器
    db.users.update({"uid":2},{"set":{"age":18}}) 删除⼀一个字段unset修改器器
    db.users.update({"uid":2},{"unset":{"age":true}}) 数组的更更新 db.users.update({"uid":2},{"push":{"email":"a"}})
    pushAll在元组中增加多个元素,但是他不不检查元素是否存在 db.users.update({"uid":2},{"pushAll":{"email":["a", "b","c","d"]}})
    addToSet 往数组中添加⼀一个不不重复的元素 db.users.update({"uid":2},{"addToSet":{"email":"d"}})
    添加多个不不重复的元素,这时候就得需要⽤用到*eache*操作符了了 db.users.update({"uid":2},{"addToSet":{"email":{"each":["e","g","f","d"]}}}) *删除数组元素* db.users.update({"uid":2},{"pop":{"email":-1}}) #从左侧删除⼀一个元素
    db.users.update({"uid":2},{"pop":{"email":1}})#从右侧删除⼀一个元素 db.users.update({"uid":2},{"pull":{"email":"b"}}) #删除数组内的指定⼀一个元素
    db.users.update({"uid":2},{"pullAll":{"email":["b","c"]}}) #删除数组内指定的多个元 素 数组元素的更更新 通过数组.下标修改 db.users.update({"uid":2},{"set":{"email.0":"tim.qq.com"}})
    等于 =
    db.users.find({"salary":3000}).pretty()
    ⼩小于 <
    db.users.find({"salary":{lt:3000}}).pretty() ⼩小于等于 <= db.users.find({"salary":{lte:3000}}).pretty()
    ⼤大于 >
    db.users.find({"salary":{gt:3000}}).pretty() ⼤大于等于 >= db.users.find({"salary":{gte:3000}}).pretty()
    不不等于 !=
    db.users.find({"salary":{ne:3000}}).pretty() MongoDB 的 find() ⽅方法可以传⼊入多个键(key),每个键(key)以逗号隔开,即常规 SQL 的 AND 条件 db.users.find({"id":2, "sex": "M"}).pretty() MongoDB OR 条件语句句使⽤用了了关键字or,语法格式如下:
    db.users.find(
    {
    $or: [
    {key1: value1}, {key2:value2}
    ]
    }
    ).pretty()

    相关文章

      网友评论

          本文标题:day07 MongoDB基础语法

          本文链接:https://www.haomeiwen.com/subject/skwiwqtx.html