zoukankan      html  css  js  c++  java
  • MongoDB 集合与文档操作

    一、创建DB

    1、查看DB

    >show dbs

    2、创建DB

    >use mydb

    3、查看当前DB

    >db

    4、删除DB

    >use mydb

    >db.dropDatabase()

     二、创建集合

    1、查看DB的集合

    >show collections

    2、创建集合

    db.createCollection(name, options)

    > db.createCollection("mycollection")

    3、重命名集合

    MongoDB Enterprise > db.trs_action_dzwl_zm_1.renameCollection("trs_action_dzwl_zm")

    4、删除集合

    db.collection.drop()

    >db.mycollection.drop()

    5、固定集合

     >db.createCollection("user-max",{capped:true,size:1000000,max:10000,autoIndexId:true}); 

    固定集合特点:
        1、到达数据空间或者文档数的上限,则扔掉最老的文档
        2、MySQL的数据copy使用的是binlog,而MongoDB数据copy则使用固定长度的集合
        3、固定集合不能转换为正常的集合,正常的集合可以转化为固定集合,转化方式如下:
            db.runCommand({"covertToCapped":"collection-name", size:100000,max:1000});

    6、TTL集合(TTL索引)

    三、插入文档

    1、插入文档

    db.COLLECTION_NAME.insert(document)

    >db.mycollection.insert({title:'asasca',name:'xiaofuren',like:100})

    2、3.2 版本后还有以下几种语法可用于插入文档

    • db.collection.insertOne():向指定集合中插入一条文档数据
    • db.collection.insertMany():向指定集合中插入多条文档数据

    1)插入单条

    >db.mycollection.insertOne({"as":300})

    2)插入多条

    >db.mycollection.insertMany([{"bbb":2300},{"cccc":21425}])

    四、更新文档

    1、更新文档语法

    db.collection.update(

    <query>,   //update的查询条件,类似sql update查询内where后面的。

    <update>, //update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的

    {

        upset:<boolean>, //可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。

        multi:<boolean>,  //可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。

        wrietConcern:<document> //可选,抛出异常的级别。

    }

    )

    2、更新document

     >db.mycollection.update({'bbb':2300},{$set:{'bbb':'This is Tom!'}})

      

    3、save()方法

    save() 方法通过传入的文档来替换已有文档。语法格式如下:

    db.collection.save(
       <document>,
       {
         writeConcern: <document>
       }
    )

    示例

    以下实例中我们替换了 _id 为 56064f89ade2f21f36b03136 的文档数据:

    >db.col.save({
        "_id" : ObjectId("56064f89ade2f21f36b03136"),
        "title" : "MongoDB",
        "description" : "MongoDB 是一个 Nosql 数据库",
        "by" : "Runoob",
        "url" : "http://www.runoob.com",
        "tags" : [
                "mongodb",
                "NoSQL"
        ],
        "likes" : 110
    })

    五、删除文档

    1、删除语法

    如果你想删除所有数据,可以使用以下方式(类似常规 SQL 的 truncate 命令):

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

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

    参数说明:

    • query :(可选)删除的文档的条件。
    • justOne : (可选)如果设为 true 或 1,则只删除一个文档,如果不设置该参数,或使用默认值 false,则删除所有匹配条件的文档。
    • writeConcern :(可选)抛出异常的级别。

    2、删除选择的数据

    > db.mycollection.remove({"bbb":'This is Tom!'})

    3、删除所有数据

    >db.mycollection.remove({})

    4、新的删除方法

    remove() 方法已经过时了,现在官方推荐使用 deleteOne() 和 deleteMany() 方法。

    如删除集合下全部文档:

    db.inventory.deleteMany({})

    删除 status 等于 A 的全部文档:

    db.inventory.deleteMany({ status : "A" })

    删除 status 等于 D 的一个文档:

    db.inventory.deleteOne( { status: "D" } )

    5、remove与delete注意事项

    remove() 方法 并不会真正释放空间。

    需要继续执行 db.repairDatabase() 来回收磁盘空间。

    > db.repairDatabase()
    或者
    > db.runCommand({ repairDatabase: 1 })

    六、查询文档

    1、find查询语法如下

    db.collection.find(query, projection)

    • query :可选,使用查询操作符指定查询条件
    • projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)。

    如果你需要以易读的方式来读取数据,可以使用 pretty() 方法,语法格式如下:

    >db.col.find().pretty()

    pretty() 方法以格式化的方式来显示所有文档。

    2、find查询示例

    1)插入数据

    MongoDB Enterprise > db.mycollection.insertMany([{"aaa":300,"name":'xiaoli'},{"bbb":400,"name":'laowang'},{"ccc":1200,"name":'boss'}])
    {
     "acknowledged" : true,
     "insertedIds" : [
      ObjectId("5def58cc4b686e3b924617f1"),
      ObjectId("5def58cc4b686e3b924617f2"),
      ObjectId("5def58cc4b686e3b924617f3")
     ]
    }

    2)查询数据
    MongoDB Enterprise > db.mycollection.find()
    { "_id" : ObjectId("5def58cc4b686e3b924617f1"), "aaa" : 300, "name" : "xiaoli" }
    { "_id" : ObjectId("5def58cc4b686e3b924617f2"), "bbb" : 400, "name" : "laowang" }
    { "_id" : ObjectId("5def58cc4b686e3b924617f3"), "ccc" : 1200, "name" : "boss" }

    3)格式化方式查询数据
    MongoDB Enterprise > db.mycollection.find().pretty()
    {
     "_id" : ObjectId("5def58cc4b686e3b924617f1"),
     "aaa" : 300,
     "name" : "xiaoli"
    }
    {
     "_id" : ObjectId("5def58cc4b686e3b924617f2"),
     "bbb" : 400,
     "name" : "laowang"
    }
    {
     "_id" : ObjectId("5def58cc4b686e3b924617f3"),
     "ccc" : 1200,
     "name" : "boss"
    }

    3、findOne()

    > db.mycollection.findOne()

     

     4、MongoDB与RDBMS where 语句比较

    操作 格式 范例 SQL
    等于 {key:value} db.col.find({"name":"xiaoli"}) where name='xiaoli'
    小于 {key:{$lt:value}} db.col.find({"class":{$lt:4}}) where class<4
    小于或等于 {key:{$lte:value}} db.col.find({"class":{$lte:4}}) where class<=4
    大于 {key:{$gt:value}} db.col.find({"class":{$gt:4}}) where class>4
    大于或等于 {key:{$gte:value}} db.col.find({"class":{$gte:4}}) where class>=4
    不等于 {key:{$ne:value}} db.col.find({"class":{$ne:4}}) where class !=4

    5、MongoDB AND OR 条件

    1)AND条件

    >db.col.find({"name":"xiaoli","class":4}).pretty

    2)OR条件

    >db.col.find({$or:[{"name":"xiaoli"},{"class":4}]})

    3)AND与OR结合使用

    >db.col.find({"class":{$gt:4},$or[{"name":"xiaoli"},{"name":"dawang"}]})

    where class>4 and (name="xiaoli" or name="dawang")

  • 相关阅读:
    loj 6035 「雅礼集训 2017 Day4」洗衣服
    BZOJ 3251 树上三角形
    UwrhrQNgRh
    百度之星2018资格赛1002题解
    [CF-676B]PYRAMID OF GLASSES
    【CF-371C】Hamburgers
    洛谷P1012拼数——字符串排序
    位运算详解及应用
    NOIP 2014 Day2 T1 无线网络发射器
    写代码要注意的几点(2)
  • 原文地址:https://www.cnblogs.com/xibuhaohao/p/11320866.html
Copyright © 2011-2022 走看看