• 【MongoDB详细使用教程】二、MongoDB基本操作


    【MongoDB详细使用教程】一、Mac安装MongoDB
    【MongoDB详细使用教程】二、MongoDB基本操作
    【MongoDB详细使用教程】三、高级查询
    【MongoDB详细使用教程】四、python操作MongoDB
    【MongoDB详细使用教程】五、MongoDB的数据库管理

    1、数据类型

    MongoDB常见类型 说明
    Object ID 文档ID
    String 字符串,最常用,必须是有效的UTF-8
    Boolean 存储一个布尔值,true或false
    Integer 整数可以是32位或64位,这取决于服务器
    Double 存储浮点值
    Arrays 数组(js)或列表(python),多个值存储到一个键
    Object 用于嵌入式的文档,即一个值为一个文档
    Null 存储Null值
    Timestamp 时间戳
    Date 存储当前日期或时间的UNIX时间格式

    2、数据库操作

    命令 操作
    show dbs 显示数据库列表
    db 显示当前数据库
    use 数据库名 切换或创建数据(有则切换,无则创建)
    db.dropDatabase() 删除当前所在数据库(D大写)

    注:

    • 使用"show dbs"时,不显示空的数据库
    > use mymongo
    switched to db mymongo
    
    > db
    mymongo
    
    > show dbs          # 创建后使用show dbs不会显示刚创建的数据库
    admin   0.000GB
    config  0.000GB
    local   0.000GB
    
    > db
    mymongo
    
    > db.mytest.insert({"name":"chen"})
    WriteResult({ "nInserted" : 1 })
    
    > show dbs
    admin    0.000GB
    config   0.000GB
    local    0.000GB
    mymongo  0.000GB    # 插入一条数据后,就可以在show dbs中显示出来了
    
    • 删除数据库前要切换到要删除的数据库,删除之后数据库内内容被清空,使用"show dbs"不显示,但是使用"db"命令的时候还会看到。
    > show dbs
    admin    0.000GB
    config   0.000GB
    local    0.000GB
    mymongo  0.000GB
    
    > db.dropDatabase()
    { "dropped" : "mymongo", "ok" : 1 }
    
    > show dbs
    admin   0.000GB
    config  0.000GB
    local   0.000GB
    

    3、集合操作

    关系型数据库中,每个库是由多张table组成,
    而NoSQL中,每个库是由多个集合(collection)组成,相当于sql中的table,集合中以键值对(json、python.dict)的形式保存数据。

    命令 操作
    db.createCollection(集合名, [参数]) 创建集合(一般不用这种方式而是在插入数据时自动创建)
    show collections/show tables 查看集合
    db.集合名.drop() 删除集合
    > db.createCollection("colletiontest")
    { "ok" : 1 }
    
    > show collections
    colletiontest
    mytest
    
    > db.colletiontest.drop()
    true
    
    > show collections
    mytest
    

    4、数据操作

    也叫文档操作

    4.1、增

    db.集合名.insert({"键名1":值1, "键名2": 值2 ...})
    
    > db.students.insert({"name":"chen","age":"18", "grade":"一年级"})
    WriteResult({ "nInserted" : 1 })
    > db.students.insert({"name":"wang","age":"19", "grade":"二年级"})
    WriteResult({ "nInserted" : 1 })
    > db.students.insert({"name":"xu","age":20, "grade":"三年级"})
    WriteResult({ "nInserted" : 1 })
    
    

    一条insert语句只能插入一行数据,insert后面不能跟多行数据。

    4.2、查

    db.集合名.findOne()        # 查询一行
    db.集合名.find()           # 查询全部
    db.集合名.find().pretty()  # 格式化打印
    
    db.集合名.find({查找条件}) # 按条件查找
    
    > db.students.findOne()
    {
    	"_id" : ObjectId("5db63d020f98841018f7695f"),
    	"name" : "chen",
    	"age" : "18",
    	"grade" : "一年级"
    }
    
    > db.students.find()
    { "_id" : ObjectId("5db642b30f98841018f76965"), "name" : "chen", "age" : "18", "grade" : "一年级" }
    { "_id" : ObjectId("5db642bc0f98841018f76966"), "name" : "wang", "age" : "19", "grade" : "二年级" }
    { "_id" : ObjectId("5db653920f98841018f7696b"), "name" : "xu", "age" : 20, "grade" : "三年级" }
    
    > db.students.find().pretty()
    {
    	"_id" : ObjectId("5db642b30f98841018f76965"),
    	"name" : "chen",
    	"age" : "18",
    	"grade" : "一年级"
    }
    {
    	"_id" : ObjectId("5db642bc0f98841018f76966"),
    	"name" : "wang",
    	"age" : "19",
    	"grade" : "二年级"
    }
    {
    	"_id" : ObjectId("5db653920f98841018f7696b"),
    	"name" : "xu",
    	"age" : 20,
    	"grade" : "三年级"
    }
    
    > db.students.find()
    { "_id" : ObjectId("5db642b30f98841018f76965"), "name" : "chen", "age" : "18", "grade" : "一年级" }
    { "_id" : ObjectId("5db642bc0f98841018f76966"), "name" : "wang", "age" : "19", "grade" : "二年级" }
    { "_id" : ObjectId("5db653920f98841018f7696b"), "name" : "xu", "age" : 20, "grade" : "三年级" }
    { "_id" : ObjectId("5db654660f98841018f7696c"), "name" : "ma", "age" : 20, "grade" : "二年级" }
    
    > db.students.find({"age":20})
    { "_id" : ObjectId("5db653920f98841018f7696b"), "name" : "xu", "age" : 20, "grade" : "三年级" }
    { "_id" : ObjectId("5db654660f98841018f7696c"), "name" : "ma", "age" : 20, "grade" : "二年级" }
    

    "_id"是mongoDB自动添加的主键.
    十六进制,每两个字符为一个字节,共12个字节

    • 前4个字节为当前时间戳
    • 接下来3个字节为机器ID
    • 再接下来2个是MongoDB的进程ID
    • 最后是排序流水号

    4.3、改

    4.3.1、修改整行

    db.集合名.update({查询条件}, {修改后结果})
    

    这里要注意,修改后结果就是整行的最终结果,并且只会修改一行,而不是所有匹配结果都修改。

    可以通过多个字段查找

    4.3.2、修改指定字段的值

    db.students.update({查找条件}, {$set:{"要修改的字段名1":修改后的值, "要修改的字段名2": "值2"}})
    

    同时修改了连个字段的值,但同样只会修改一条记录

    4.4、删

    db.集合名.remove({查询条件})  
    db.集合名.remove({})    # 删除全部数据  
    

    会删除所有的匹配项

  • 相关阅读:
    docker启动mysql报错||docker ps没有容器,docker ps -a有发现断开了
    Mysql8.x配置安装(附高速下载)以及密码修改
    hibernate配置文件
    笔记,websocket不通,HikariPool Exception during pool initialization,文件下载跨域问题
    微服务中怎么将一个外部的jar添加到项目中
    postman测试需要校验权限的接口的方法
    通过Microsoft SQL Server Managerment Studio数据库管理工具创建SQL Server数据库的链接服务器
    Hashset和Treeset的区别
    maven项目抛出org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.IncompatibleClassChangeError: Implementing class
    MySQL索引
  • 原文地址:https://www.cnblogs.com/cbowen/p/11752733.html
Copyright © 2020-2023  润新知