zoukankan      html  css  js  c++  java
  • mongoDB

    一、常见的NoSQL数据库分类


     二、mongoDB的基本概念


     

    2.1 mongodb中的基本的概念是文档,集合,数据库

     当插入第一个文档时,集合就被创建

    2.2 MongoDB的数据类型

     三、mongoDB的基本操作


     

    3.1.1 mongoDB的shell命令连接

     ./mongod --dbpath=/var/lib/mongo  --bind_ip=10.19.186.213 --port=27017

    -dbpath数据库路径
    bind_ip绑定的ip地址
    port绑定端口
    客户端启动命令
    [root@host-10-19-186-213 bin]# ./mongo 10.19.186.213:27017
    MongoDB shell version v5.0.2
    connecting to: mongodb://10.19.186.213:27017/test?compressors=disabled&gssapiServiceName=mongodb
    Implicit session: session { "id" : UUID("0d056d3f-432e-4bb5-856d-39514b5a7485") }
    MongoDB server version: 5.0.2
    ================
    Warning: the "mongo" shell has been superseded by "mongosh",  

    MongDB创建数据库

    use DATABASE_NAME
    eg:

    > use andy
    switched to db andy

    如果数据库不存在,则创建数据库,否则切换到指定的数据

    显示所有数据库

    > show dbs
    admin     0.000GB
    config    0.000GB
    local     0.000GB
    runoob    0.000GB
    security  0.000GB
    test      0.000GB

    可以看到刚才创建的数据库andy并不存在,查询资料发现,只有在插入数据的情况下才能显示数据库

    > db.andy.insert({"name":"andy"})
    WriteResult({ "nInserted" : 1 })
    > show dbs
    admin     0.000GB
    andy      0.000GB
    config    0.000GB 

    删除数据库 

    db.dropDatabase()

    eg:

    > use andy
    switched to db andy
    > db.dropDatabase()
    { "ok" : 1 }
    > show dbs
    admin 0.000GB
    config 0.000GB
    local 0.000GB
    runoob 0.000GB
    security 0.000GB
    test 0.000GB

    可以看到andy数据库已经被删除了

    删除集合  

     db.collection.drop()  

    插入文档

    文档的数据结构和JSON基本一样。

    所有存储在集合中的数据都是BSON格式。

    BSON是一种类json的一种二进制形式的存储格式,简称Binary JSON。

    MongoDB使用insert()或者save()方法向集合汇总插入文档

    db.COLLECTION_NAME.insert(document)
    COLLECTION_NAME是集合名称,相当于关系型数据库的表概念
    不存在则创建,存在则往里面插入一条数据

    document也可以是一个参数
    db.an.insert({"gender":"male"})
    an是集合,在an这个集合中插入一个文档(相当于关系型数据库的行概念)

    定义一个变量

    > document=({"name":"Sicilia"},{"age":18})
    { "age" : 18 }
    > db.an.insert(document)

    结果:表名集合中也可以插入一个变量

    > db.an.find()
    { "_id" : ObjectId("61306950615fc7d492c425af"), "name" : "Sicilia" }
    { "_id" : ObjectId("61306bbd615fc7d492c425b0"), "age" : 18 }
    { "_id" : ObjectId("61306bff615fc7d492c425b1"), "gender" : "male" }

    更新文档

    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 :可选,抛出异常的级别。

    下面我们就将  "age" : 18 修改为 "age" : 1

    > db.an.update({"age":18},{$set:{"age":1}})
    WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
    > db.an.find()
    { "_id" : ObjectId("61306950615fc7d492c425af"), "name" : "Sicilia" }
    { "_id" : ObjectId("61306bbd615fc7d492c425b0"), "age" : 1 }
    { "_id" : ObjectId("61306bff615fc7d492c425b1"), "gender" : "male" } 

     删除文档

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

    参数说明:

    • query :(可选)删除的文档的条件。
    • justOne : (可选)如果设为 true 或 1,则只删除一个文档。
    • writeConcern :(可选)抛出异常的级别。

    示例:

    只删除第一条匹配的记录
    
    > db.an.remove({"age":1},{justOne:1})
    WriteResult({ "nRemoved" : 1 })
    > db.an.find()
    { "_id" : ObjectId("61306950615fc7d492c425af"), "name" : "Sicilia" }
    { "_id" : ObjectId("61306bff615fc7d492c425b1"), "gender" : "male" }
    > 
    

    删除所有数据

    > db.an.remove({}) 
    WriteResult({ "nRemoved" : 2 })
    > db.an.find()
    >  

    查询文档

    db.COLLECTION_NAME.find() 

    find()方法以非结果话的方式来显示所有文档

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

    db.col.find().pretty() 

    多个条件查询,逗号隔开,类似于and

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

    OR 条件

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

    操作符  

    MongoDB中条件操作符有:
    
    (>) 大于 - $gt
    (<) 小于 - $lt
    (>=) 大于等于 - $gte
    (<= ) 小于等于 - $lte 

    例如,找出某字段大于等于100的记录

    db.col.find({字段名: {$gte : 100}}) 
    

    Limit与Skip方法

    如果想要返回指定数量的数据记录使用limit()方法,括号中可以填写数量

    > db.col.find().limit(1).pretty()
    {
            "_id" : ObjectId("61307758615fc7d492c425b2"),
            "title" : "PHP 教程",
            "description" : "PHP 是一种创建动态交互性站点的强有力的服务器端脚本语言。",
            "by" : "MongoDB中文网",
            "url" : "http://www.mongodb.org.cn",
            "tags" : [
                    "php"
            ],
            "likes" : 200
    }
    > 
    

    skip()方法来跳过指定数量的数据,skip方法同样接受一个数字参数作为跳过的记录条数。

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

    排序方法 

    在MongoDB中使用使用sort()方法对数据进行排序,sort()方法可以通过参数指定排序的字段,并使用 1 和 -1 来指定排序的方式,其中 1 为升序排列,而-1是用于降序排列。

    db.COLLECTION_NAME.find().sort({KEY:1}) 
    

     索引 exsureIndex

    如果没有索引,MongoDB在读取数据时必须扫描集合中的每一个文档,效率很低

    索引是特殊的数据结构,索引存储在一个易于遍历读取的数据集合中,索引是对数据库表中一列或多列的值进行排序的一种结构

    db.COLLECTION_NAME.ensureIndex({KEY:1})  

    key为你要创建的索引字段,1为指定按升序创建索引,如果要按降序来创建索引指定为-1

      

      

     

  • 相关阅读:
    Matrix Power Series
    Recursive sequence HDU5950
    P2151 [SDOI2009]HH去散步
    P4273 [NOI2004] 降雨量
    P1034 [NOIP2002 提高组] 矩形覆盖
    P1027 [NOIP2001 提高组] Car 的旅行路线
    Win10使用Dism++离线安装.Net3.5
    WPF之模板
    WPF之资源
    WPF之命令
  • 原文地址:https://www.cnblogs.com/anyanpeng/p/15217949.html
Copyright © 2011-2022 走看看