美文网首页
MongoDB边操作边学CRUD

MongoDB边操作边学CRUD

作者: 灯不梨喵 | 来源:发表于2017-12-23 22:12 被阅读0次

    在上一篇安装过程我们已经成功把MongoDB创建为Windows的启动命令,
    在http://127.0.0.1:27017/也看到了成功启动的结果

    成功启动服务
    那之后呢?
    我们在命令行直接输入mongo命令

    显示了当前MongoDB的信息,当前连接的不是某一个数据库,而是我们的本地页面,那事不宜迟我们赶紧来使用吧

    创建数据库

    语法

    use DATABASE_NAME

    示例

    要显示新创建的数据库,需要至少插入一个文档,空的数据库是不显示出来的。



    删除数据库

    语法

    db.dropDatabase()

    示例
    删除数据库test

    插入文档

    文档的数据结构和JSON基本一样。
    所有存储在集合中的数据都是BSON格式。
    BSON是一种类json的一种二进制形式的存储格式,简称Binary JSON。

    语法

    db.COLLECTION_NAME.insert(document)

        db.collection.insertOne() New in version 3.2
        db.collection.insertMany() New in version 3.2
    
    示例
    插入一个榴莲比萨
    pizza是集合名
    当然我们也可以使用一个变量定义数据,再插入数据

    document=数据
    db.pizza.insert(document)
    插入数据后,数据自带了ID,id定义看这里

    更新

    一般使用update()方法,但同时还有另外一个save()方法
    要说到save()insert()的区别了
    若新增的数据中存在主键 ,insert() 会提示错误,而save() 则更改原来的内容为新内容。
    如:
    已存在数据: {_id : 1, " name " : " n1 " },再次进行插入操作时,
    insert({_id : 1, " name " : " n2 " }) 会报主键重复的错误提示
    save({ _id : 1, " name " : " n2 " }) 会把 n1 修改为 n2 。
    相同点:
    若新增的数据中没有主键时,会增加一条记录。
    已存在数据: { _id : 1, " name " : " n1 " },再次进行插入操作时,
    insert({ " name " : " n2 " }) 插入的数据因为没有主键,所以会增加一条数据
    save({ " name " : " n2 " }) 增加一条数据。

    db.collection.updateOne() New in version 3.2
    db.collection.updateMany() New in version 3.2
    db.collection.replaceOne() New in version 3.2
    
    语法
    db.collection.update(
       <query>,
       <update>,
       {
         upsert: <boolean>,
         multi: <boolean>,
         writeConcern: <document>
       }
    )
    

    第一个参数是查找条件,第二个参数是修改内容,第三个参数可选。
    upsert:如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
    multi : mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
    writeConcern :抛出异常的级别。

    示例
    更新操作
    有关示例出现修改内容的$set,这一类叫做修改器,详情参考这里
    如果不用$set会怎么样?

    删除

    语法
    db.collection.remove(
       <query>,
       <justOne>
    )
    

    如果 MongoDB 是 2.6 版本以后的,语法格式如下:

    db.collection.remove(
       <query>,
       {
         justOne: <boolean>,
         writeConcern: <document>
       }
    )
    

    参数说明:
    query :(可选)删除的文档的条件。
    justOne : (可选)如果设为 true 或 1,则只删除一个文档。
    writeConcern :(可选)抛出异常的级别。
    如果要删除全部数据则>db.col.remove({})
    db.collection.deleteOne() New in version 3.2
    db.collection.deleteMany() New in version 3.2

    示例

    查询

    语法

    db.collection.find(query, projection)
    query :可选,使用查询操作符指定查询条件
    projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)。
    查询的进一步学习(排序、索引、投影等)

    如果你需要以易读的方式来读取数据,可以使用 pretty() 方法,语法格式如下:
    >db.col.find().pretty()
    pretty() 方法以格式化的方式来显示所有文档。
    可以传入多个键,等于常规SQL的AND
    db.col.find({key1:value1, key2:value2})
    一些可能用到的修改器:
    $lt <
    $lte <=
    $gt >
    $gte >=
    $ne !=
    $or OR

    >db.col.find(
       {
          $or: [
             {key1: value1}, {key2:value2}
          ]
       }
    ).pretty()
    
    示例

    现在数据库test的集合pizza中有如下数据:



    查找price<90的:


    图片.png

    相关文章

      网友评论

          本文标题:MongoDB边操作边学CRUD

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