zoukankan      html  css  js  c++  java
  • mongodb基本操作

    数据库操作

    • 创建数据库
    use DATABASE_NAME
    如果数据库不存在,则创建数据库,否则切换到指定数据库。
    show dbs 显示所有数据库
    db 显示当前数据库
    use test 连接到指定数据库
    刚刚创建后显示不出来, 要想显示,需要插入数据才可以
    • 删除数据库
    db.dropDatabase()

    删除当前数据库

     
    • 删除集合
    db.collection.drop()

    文档操作

    • 插入文档
    所有存储在集合中的数据都是BSON格式, 类json的二进制Binary JSON
    db.COLLECTION_NAME.insert(document)
    集合名不存在则自动创建
    实例 1
    >db.col.insert({title: 'MongoDB 教程', 
        description: 'MongoDB 是一个 Nosql 数据库',
        by: '菜鸟教程',
        url: 'http://www.runoob.com',
        tags: ['mongodb', 'database', 'NoSQL'],
        likes: 100
    })
    实例2
    将数据定义为变量, 然后插入变量
    > document=({title: 'MongoDB 教程', 
        description: 'MongoDB 是一个 Nosql 数据库',
        by: '菜鸟教程',
        url: 'http://www.runoob.com',
        tags: ['mongodb', 'database', 'NoSQL'],
        likes: 100
    });
    .db.col.insert(document)
    
    
     
    插入文档也可使用dbcol.save(document)
           指定_id则会更新
    • 查看文档

    1. db.col.find()
      db.col.find().pretty()        #格式化数据
    • 更新文档
    mongoDB使用update() 和save() 来更新集合中的文档
    update()    更新已经存在的文档
    db.collection.update(
       <query>,
       <update>,
       {
         upsert: <boolean>,
         multi: <boolean>,
         writeConcern: <document>
       }
    )

    参数说明:

    • query : update的查询条件,类似sql update查询内where后面的。
    • update : update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的
    • upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
    • multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
    • writeConcern :可选,抛出异常的级别。

     

    实例
    >db.col.insert({
        title: 'MongoDB 教程', 
        description: 'MongoDB 是一个 Nosql 数据库',
        by: '菜鸟教程',
        url: 'http://www.runoob.com',
        tags: ['mongodb', 'database', 'NoSQL'],
        likes: 100
    })
    db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}})
    db.col.find().pretty()
    
    
     如果要修改多挑文档, 设置multi参数为true
     
    db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}},{multi:true})
    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
    })
     

    更多实例

    只更新第一条记录:
    
    db.col.update( { "count" : { $gt : 1 } } , { $set : { "test2" : "OK"} } );
    全部更新:
    
    db.col.update( { "count" : { $gt : 3 } } , { $set : { "test2" : "OK"} },false,true );
    只添加第一条:
    
    db.col.update( { "count" : { $gt : 4 } } , { $set : { "test5" : "OK"} },true,false );
    全部添加加进去:
    
    db.col.update( { "count" : { $gt : 5 } } , { $set : { "test5" : "OK"} },true,true );
    全部更新:
    
    db.col.update( { "count" : { $gt : 15 } } , { $inc : { "count" : 1} },false,true );
    只更新第一条记录:
    
    db.col.update( { "count" : { $gt : 10 } } , { $inc : { "count" : 1} },false,false );
    • 删除文档

    remove()
    使用删除前, 先find()来判断条件是否正确
     
    db.collection.remove(
       <query>,            --删除的条件
       {
         justOne: <boolean>,        --justOne, true为删除一个
         writeConcern: <document>    --抛出异常的级别, 可选
       }
    )
    删除
    >db.col.remove({'title':'MongoDB 教程'})
    WriteResult({ "nRemoved" : 2 })           # 删除了两条数据
    >db.col.find()
    
    

    如果你只想删除第一条找到的记录可以设置 justOne 为 1,如下所示:

    >db.COLLECTION_NAME.remove(DELETION_CRITERIA,1)

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

    >db.col.remove({})
    >db.col.find()

     文档查询

     
    • 文档查询操作
    
    
    1. >db.COLLECTION_NAME.find()
    使用易读的方式来读取数据, 可以使用pretty()
    >db.col.find().pretty()
    MongoDB 与 RDBMS Where 语句比较

    如果你熟悉常规的 SQL 数据,通过下表可以更好的理解 MongoDB 的条件语句查询:

    操作格式范例RDBMS中的类似语句
    等于 {<key>:<value>} db.col.find({"by":"菜鸟教程"}).pretty() where by = '菜鸟教程'
    小于 {<key>:{$lt:<value>}} db.col.find({"likes":{$lt:50}}).pretty() where likes < 50
    小于或等于 {<key>:{$lte:<value>}} db.col.find({"likes":{$lte:50}}).pretty() where likes <= 50
    大于 {<key>:{$gt:<value>}} db.col.find({"likes":{$gt:50}}).pretty() where likes > 50
    大于或等于 {<key>:{$gte:<value>}} db.col.find({"likes":{$gte:50}}).pretty() where likes >= 50
    不等于 {<key>:{$ne:<value>}} db.col.find({"likes":{$ne:50}}).pretty() where likes != 50

     
     

    AND   可以传入多个键(key) 每个key用逗号隔开

    >db.col.find({key1:value1, key2:value2}).pretty()

    实例, 相当于where中的and

    db.col.find({"by":"菜鸟教程", "title":"MongoDB 教程"}).pretty()

    $or   相当于where中的or

    >db.col.find(
       {
          $or: [
             {key1: value1}, {key2:value2}
          ]
       }
    ).pretty()
    实例
    >db.col.find({$or:[{"by":"菜鸟教程"},{"title": "MongoDB 教程"}]}).pretty()
     
     

    and和or的联合使用

             where likes>50 AND (by = '菜鸟教程' OR title = 'MongoDB 教程')'
     
      
    >db.col.find({"likes": {$gt:50}, $or: [{"by": "菜鸟教程"},{"title": "MongoDB 教程"}]}).pretty()
    {
            "_id" : ObjectId("56063f17ade2f21f36b03133"),
            "title" : "MongoDB 教程",
            "description" : "MongoDB 是一个 Nosql 数据库",
            "by" : "菜鸟教程",
            "url" : "http://www.runoob.com",
            "tags" : [
                    "mongodb",
                    "database",
                    "NoSQL"
            ],
            "likes" : 100
    }

    条件操作符

     条件操作符

    (>) 大于 - $gt
    (<) 小于 - $lt
    (>=) 大于等于 - $gte
    (<= ) 小于等于 - $lte

    我们使用的数据库名称为"runoob" 我们的集合名称为"col",以下为我们插入的数据。

    为了方便测试,我们可以先使用以下命令清空集合 "col" 的数据:

    db.col.remove({})

    插入以下数据

    >db.col.insert({
        title: 'PHP 教程', 
        description: 'PHP 是一种创建动态交互性站点的强有力的服务器端脚本语言。',
        by: '菜鸟教程',
        url: 'http://www.runoob.com',
        tags: ['php'],
        likes: 200
    })
    >db.col.insert({title: 'Java 教程', 
        description: 'Java 是由Sun Microsystems公司于1995年5月推出的高级程序设计语言。',
        by: '菜鸟教程',
        url: 'http://www.runoob.com',
        tags: ['java'],
        likes: 150
    })
    >db.col.insert({title: 'MongoDB 教程', 
        description: 'MongoDB 是一个 Nosql 数据库',
        by: '菜鸟教程',
        url: 'http://www.runoob.com',
        tags: ['mongodb'],
        likes: 100
    })

    使用find()命令查看数据:

    > db.col.find()
    { "_id" : ObjectId("56066542ade2f21f36b0313a"), "title" : "PHP 教程", "description" : "PHP 是一种创建动态交互性站点的强有力的服务器端脚本语言。", "by" : "菜鸟教程", "url" : "http://www.runoob.com", "tags" : [ "php" ], "likes" : 200 }
    { "_id" : ObjectId("56066549ade2f21f36b0313b"), "title" : "Java 教程", "description" : "Java 是由Sun Microsystems公司于1995年5月推出的高级程序设计语言。", "by" : "菜鸟教程", "url" : "http://www.runoob.com", "tags" : [ "java" ], "likes" : 150 }
    { "_id" : ObjectId("5606654fade2f21f36b0313c"), "title" : "MongoDB 教程", "description" : "MongoDB 是一个 Nosql 数据库", "by" : "菜鸟教程", "url" : "http://www.runoob.com", "tags" : [ "mongodb" ], "likes" : 100 }

    MongoDB (>) 大于操作符 - $gt

    如果你想获取 "col" 集合中 "likes" 大于 100 的数据,你可以使用以下命令:

    db.col.find({"likes" : {$gt : 100}})

    类似于SQL语句:

    Select * from col where likes > 100;

    输出结果:

    > db.col.find({"likes" : {$gt : 100}})
    { "_id" : ObjectId("56066542ade2f21f36b0313a"), "title" : "PHP 教程", "description" : "PHP 是一种创建动态交互性站点的强有力的服务器端脚本语言。", "by" : "菜鸟教程", "url" : "http://www.runoob.com", "tags" : [ "php" ], "likes" : 200 }
    { "_id" : ObjectId("56066549ade2f21f36b0313b"), "title" : "Java 教程", "description" : "Java 是由Sun Microsystems公司于1995年5月推出的高级程序设计语言。", "by" : "菜鸟教程", "url" : "http://www.runoob.com", "tags" : [ "java" ], "likes" : 150 }
    >

    MongoDB(>=)大于等于操作符 - $gte

    如果你想获取"col"集合中 "likes" 大于等于 100 的数据,你可以使用以下命令:

    db.col.find({likes : {$gte : 100}})

    类似于SQL语句:

    Select * from col where likes >=100;

    输出结果:

    > db.col.find({likes : {$gte : 100}})
    { "_id" : ObjectId("56066542ade2f21f36b0313a"), "title" : "PHP 教程", "description" : "PHP 是一种创建动态交互性站点的强有力的服务器端脚本语言。", "by" : "菜鸟教程", "url" : "http://www.runoob.com", "tags" : [ "php" ], "likes" : 200 }
    { "_id" : ObjectId("56066549ade2f21f36b0313b"), "title" : "Java 教程", "description" : "Java 是由Sun Microsystems公司于1995年5月推出的高级程序设计语言。", "by" : "菜鸟教程", "url" : "http://www.runoob.com", "tags" : [ "java" ], "likes" : 150 }
    { "_id" : ObjectId("5606654fade2f21f36b0313c"), "title" : "MongoDB 教程", "description" : "MongoDB 是一个 Nosql 数据库", "by" : "菜鸟教程", "url" : "http://www.runoob.com", "tags" : [ "mongodb" ], "likes" : 100 }
    >

    MongoDB (<) 小于操作符 - $lt

    如果你想获取"col"集合中 "likes" 小于 150 的数据,你可以使用以下命令:

    db.col.find({likes : {$lt : 150}})

    类似于SQL语句:

    Select * from col where likes < 150;

    输出结果:

    > db.col.find({likes : {$lt : 150}})
    { "_id" : ObjectId("5606654fade2f21f36b0313c"), "title" : "MongoDB 教程", "description" : "MongoDB 是一个 Nosql 数据库", "by" : "菜鸟教程", "url" : "http://www.runoob.com", "tags" : [ "mongodb" ], "likes" : 100 }

    MongoDB (<=) 小于操作符 - $lte

    如果你想获取"col"集合中 "likes" 小于等于 150 的数据,你可以使用以下命令:

    db.col.find({likes : {$lte : 150}})

    类似于SQL语句:

    Select * from col where likes <= 150;

    输出结果:

    > db.col.find({likes : {$lte : 150}})
    { "_id" : ObjectId("56066549ade2f21f36b0313b"), "title" : "Java 教程", "description" : "Java 是由Sun Microsystems公司于1995年5月推出的高级程序设计语言。", "by" : "菜鸟教程", "url" : "http://www.runoob.com", "tags" : [ "java" ], "likes" : 150 }
    { "_id" : ObjectId("5606654fade2f21f36b0313c"), "title" : "MongoDB 教程", "description" : "MongoDB 是一个 Nosql 数据库", "by" : "菜鸟教程", "url" : "http://www.runoob.com", "tags" : [ "mongodb" ], "likes" : 100 }
    • MongoDB 使用 (<) 和 (>) 查询 - $lt 和 $gt

    如果你想获取"col"集合中 "likes" 大于100,小于 200 的数据,你可以使用以下命令:

    db.col.find({likes : {$lt :200, $gt : 100}})

    类似于SQL语句:

    Select * from col where likes>100 AND  likes<200;

    输出结果:

    > db.col.find({likes : {$lt :200, $gt : 100}})
    { "_id" : ObjectId("56066549ade2f21f36b0313b"), "title" : "Java 教程", "description" : "Java 是由Sun Microsystems公司于1995年5月推出的高级程序设计语言。", "by" : "菜鸟教程", "url" : "http://www.runoob.com", "tags" : [ "java" ], "likes" : 150 }

    $Type操作符

    $type操作符是基于BSON类型来检索集合中匹配的数据类型,并返回结果。

    MongoDB 中可以使用的类型如下表所示:

    类型数字备注
    Double 1  
    String 2  
    Object 3  
    Array 4  
    Binary data 5  
    Undefined 6 已废弃。
    Object id 7  
    Boolean 8  
    Date 9  
    Null 10  
    Regular Expression 11  
    JavaScript 13  
    Symbol 14  
    JavaScript (with scope) 15  
    32-bit integer 16  
    Timestamp 17  
    64-bit integer 18  
    Min key 255 Query with -1.
    Max key 127  

    我们使用的数据库名称为"runoob" 我们的集合名称为"col",以下为我们插入的数据。

    简单的集合"col":

    >db.col.insert({
        title: 'PHP 教程', 
        description: 'PHP 是一种创建动态交互性站点的强有力的服务器端脚本语言。',
        by: '菜鸟教程',
        url: 'http://www.runoob.com',
        tags: ['php'],
        likes: 200
    })
    >db.col.insert({title: 'Java 教程', 
        description: 'Java 是由Sun Microsystems公司于1995年5月推出的高级程序设计语言。',
        by: '菜鸟教程',
        url: 'http://www.runoob.com',
        tags: ['java'],
        likes: 150
    })
    >db.col.insert({title: 'MongoDB 教程', 
        description: 'MongoDB 是一个 Nosql 数据库',
        by: '菜鸟教程',
        url: 'http://www.runoob.com',
        tags: ['mongodb'],
        likes: 100
    })

    使用find()命令查看数据:

    > db.col.find()
    { "_id" : ObjectId("56066542ade2f21f36b0313a"), "title" : "PHP 教程", "description" : "PHP 是一种创建动态交互性站点的强有力的服务器端脚本语言。", "by" : "菜鸟教程", "url" : "http://www.runoob.com", "tags" : [ "php" ], "likes" : 200 }
    { "_id" : ObjectId("56066549ade2f21f36b0313b"), "title" : "Java 教程", "description" : "Java 是由Sun Microsystems公司于1995年5月推出的高级程序设计语言。", "by" : "菜鸟教程", "url" : "http://www.runoob.com", "tags" : [ "java" ], "likes" : 150 }
    { "_id" : ObjectId("5606654fade2f21f36b0313c"), "title" : "MongoDB 教程", "description" : "MongoDB 是一个 Nosql 数据库", "by" : "菜鸟教程", "url" : "http://www.runoob.com", "tags" : [ "mongodb" ], "likes" : 100 }

    MongoDB 操作符 - $type 实例

    如果想获取 "col" 集合中 title 为 String 的数据,你可以使用以下命令:

    db.col.find({"title" : {$type : 2}})

    输出结果为:

    { "_id" : ObjectId("56066542ade2f21f36b0313a"), "title" : "PHP 教程", "description" : "PHP 是一种创建动态交互性站点的强有力的服务器端脚本语言。", "by" : "菜鸟教程", "url" : "http://www.runoob.com", "tags" : [ "php" ], "likes" : 200 }
    { "_id" : ObjectId("56066549ade2f21f36b0313b"), "title" : "Java 教程", "description" : "Java 是由Sun Microsystems公司于1995年5月推出的高级程序设计语言。", "by" : "菜鸟教程", "url" : "http://www.runoob.com", "tags" : [ "java" ], "likes" : 150 }
    { "_id" : ObjectId("5606654fade2f21f36b0313c"), "title" : "MongoDB 教程", "description" : "MongoDB 是一个 Nosql 数据库", "by" : "菜鸟教程", "url" : "http://www.runoob.com", "tags" : [ "mongodb" ], "likes" : 100 }
    来源: http://www.runoob.com/mongodb/mongodb-operators-type.html
     
     
     
     

     mongodb系列开始写在wiz中了, 后来直接拷贝的, 格式挺乱

  • 相关阅读:
    Leetcode 238. Product of Array Except Self
    Leetcode 103. Binary Tree Zigzag Level Order Traversal
    Leetcode 290. Word Pattern
    Leetcode 205. Isomorphic Strings
    Leetcode 107. Binary Tree Level Order Traversal II
    Leetcode 102. Binary Tree Level Order Traversal
    三目运算符
    简单判断案例— 分支结构的应用
    用switch判断月份的练习
    java基本打印练习《我行我素购物系统》
  • 原文地址:https://www.cnblogs.com/wenbronk/p/6385900.html
Copyright © 2011-2022 走看看