• MongoDB 基本使用


    博客地址:http://www.moonxy.com

    一、前言

    在当前流行的 NoSQL 数据库中,MongoDB 是大家接触比较早而且用得比较多的数据库。MongoDB 是文档型的 NoSQL 数据库,具有大数据量、高并发等优势,文档格式是类似 JSON 的 BSON 格式,但缺点是不能建立实体关系,而且也没有事务管理机制。

    BSON 是一种二进制压缩、带类型的 JSON 格式。BSON 主要用于 MongoDB 中,是 MongoDB 的数据存储格式,Json 是像字符串一样存储的,bson 是按结构存储的(像数组或者说是结构体)。

    二、下载并启动 MongoDB

    2.1 下载 MongoDB

    进入官网页面下载,当前为最新版 3.6.2,官网地址:https://www.mongodb.com

    Windows 版本分为两种:

    zip 压缩包版:

    https://downloads.mongodb.com/win32/mongodb-win32-x86_64-enterprise-windows-64-3.6.2.zip

    msi安装版:

    https://downloads.mongodb.com/win32/mongodb-win32-x86_64-enterprise-windows-64-3.6.2-signed.msi

    2.2 启动 MongoDB

    比如下载压缩包解压后,进入 bin 目录,有以下常用命令:

    mongod:启动 MongoDB 数据库。通常需要指定一个数据存放的目录,默认是 /data/db。如果启动的时候还没有创建 /data/db,则会启动失败。可以通过 --dbpath 参数指定特定的目录,参数详情可以键入 ./mongod --help;

    mongo:启动一个 Shell ./mongo,通过 shell 可以对 MongoDB 进行增删该查等操作,MongoDB Shell 是 MongoDB 自带的交互式 Javascript shell,用来对 MongoDB 进行操作和管理的交互式环境;

    mongodump:备份数据库;

    mongorestore:恢复数据库。

    方式一:命令行下运行 MongoDB 服务器

    比如 MongoDB 解压后的目录为:F:softwaremongodb,然后依次创建 data 目录和 db 目录,然后进入命令行:

    首先,启动 MongoDB 数据库服务,如下:

    F:softwaremongodbinmongod --dbpath F:softwaremongodbdatadb

    显示结果如下:

    Microsoft Windows [版本 6.1.7601]
    版权所有 (c) 2009 Microsoft Corporation。保留所有权利。
    
    C:UsersAdministrator>F:softwaremongodbinmongod --dbpath F:softwaremongo
    dbdatadb
    2018-02-07T21:51:18.375+0800 I CONTROL  [initandlisten] MongoDB starting : pid=3
    484 port=27017 dbpath=F:softwaremongodbdatadb 64-bit host=PC201601051134
    2018-02-07T21:51:18.375+0800 I CONTROL  [initandlisten] targetMinOS: Windows 7/W
    indows Server 2008 R2
    2018-02-07T21:51:18.376+0800 I CONTROL  [initandlisten] db version v3.6.2
    2018-02-07T21:51:18.376+0800 I CONTROL  [initandlisten] git version: 489d177dbd0
    f0420a8ca04d39fd78d0a2c539420
    2018-02-07T21:51:18.376+0800 I CONTROL  [initandlisten] OpenSSL version: OpenSSL
     1.0.1u-fips  22 Sep 2016
    ......

    其次,运行 ./mongo,便会进入 shell,如下:

    F:softwaremongodbinmongo

    显示结果如下:

    Microsoft Windows [版本 6.1.7601]
    版权所有 (c) 2009 Microsoft Corporation。保留所有权利。
    
    C:UsersAdministrator>F:softwaremongodbinmongo
    MongoDB shell version v3.6.2
    connecting to: mongodb://127.0.0.1:27017
    MongoDB server version: 3.6.2
    Server has startup warnings:
    2018-02-07T21:51:20.617+0800 I CONTROL  [initandlisten]
    2018-02-07T21:51:20.618+0800 I CONTROL  [initandlisten] ** WARNING: Access contr
    ol is not enabled for the database.
    2018-02-07T21:51:20.620+0800 I CONTROL  [initandlisten] **          Read and wri
    te access to data and configuration is unrestricted.
    2018-02-07T21:51:20.621+0800 I CONTROL  [initandlisten]
    2018-02-07T21:51:20.622+0800 I CONTROL  [initandlisten] ** WARNING: This server
    is bound to localhost.
    ......

    也可以采用第二种方式,将其配置为 MongoDB 服务,任选一个方式启动即可。

    2.3 远程连接 MongoDB 服务器

    MongoDB 连接远程服务器的命令格式如下:

    mongo 远程主机IP或域名:MongoDB端口号/数据库名 -u user -p password

    // 指定用户名和密码连接到指定的MongoDB数据库
    mongo 192.168.1.200:27017/test -u user -p password

    或者使用如下格式:

    mongodb://username:password@hostname/dbname

    三、命令行使用 MongoDB

    下面介绍 MongoDB 的增删改查的命令行操作。

    3.1 创建数据库

    MongoDB 使用 use DATABASE_NAME 来创建或者切换数据库。

    运行"use"命令,可以连接到一个指定的数据库。如果数据库不存在,则创建数据库,否则切换到指定数据库。MongoDB 中默认的数据库为 test,如果你没有创建新的数据库,集合将存放在 test 数据库中。

    MongoDB Enterprise > use spring
    switched to db spring

    执行 "db" 命令可以显示当前数据库对象或集合。

    MongoDB Enterprise > db
    spring

    3.2 删除数据库

    先切换到要删除的数据库,然后执行 db.dropDatabase() 删除当前数据库。

    MongoDB Enterprise > use javaee
    switched to db javaee
    MongoDB Enterprise > db.dropDatabase()
    { "ok" : 1 }

    3.3 插入文档

    MongoDB 使用 insert() 或 save() 方法向集合中插入文档,语法如下:

    db.COLLECTION_NAME.insert(document)

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

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

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

    如果该集合不在该数据库中, MongoDB 会自动创建该集合并插入文档。

    MongoDB Enterprise > db.user.insert({_id:"10001",desc:"springboot开发框架",tag:["IT","Spring"],comment:{good:1256,bad:12}})
    MongoDB Enterprise > db.user.save({_id:"10002",desc:"java",tag:["IT","编程语言"],comment:{good:56,bad:1}})

    "show dbs" 命令可以显示所有非空数据库的列表。

    MongoDB Enterprise > show dbs
    admin   0.000GB
    config  0.000GB
    local   0.000GB
    spring  0.000GB

    "show tables" 命令可以显示数据库中的所有集合。

    MongoDB Enterprise > show tables
    user

    3.4 查询文档

    MongoDB使用 find(query, projection) 方法查询文档。除了 find() 方法之外,还有一个 findOne() 方法,它只返回一个文档。

    db.collection.find(query, projection),如果你需要以易读的方式来读取数据,可以使用 pretty() 方法,语法格式如下:db.collection.find(query, projection).pretty()。

    无参时,使用 db.collection.find() 查询所有文档:

    MongoDB Enterprise > db.user.find()
    { "_id" : "10001", "desc" : "springboot开发框架", "tag" : [ "IT", "Spring" ], "comment" : { "good" : 1256, "bad" : 12 } }
    { "_id" : "10002", "desc" : "java", "tag" : [ "IT", "编程语言" ], "comment" : {"good" : 56, "bad" : 1 } }

    通过 id 条件查询:

    MongoDB Enterprise > db.user.find({_id:"10001"})
    { "_id" : "10001", "desc" : "springboot开发框架", "tag" : [ "IT", "Spring" ], "c
    omment" : { "good" : 1256, "bad" : 12 } }

    通过 comment 查询好评数量小于 1000 的条目:

    MongoDB Enterprise > db.user.find({"comment.good":{$lt:1000}})
    { "_id" : "10002", "desc" : "java", "tag" : [ "IT", "编程语言" ], "comment" : {"good" : 56, "bad" : 1 } }

    也可以使用类似 SQL 的 and、or、in 来查询,传入多个键值对,以下默认使用 and 来查询,好评数量大于 100 且小于 1000 的文档条目

    MongoDB Enterprise > db.user.find({"comment.good":{$gt:100},"comment.good":{$lt:1000}})
    { "_id" : "10002", "desc" : "java", "tag" : [ "IT", "编程语言" ], "comment" : {"good" : 56, "bad" : 1 } }

    使用 or 查询,好评数量大于 1000 或者小于 100 的文档条目:

    MongoDB Enterprise > db.user.find({$or:[{"comment.good":{$gt:1000}},{"comment.good":{$lt:100}}]})
    { "_id" : "10001", "desc" : "springboot开发框架", "tag" : [ "IT", "Spring" ], "comment" : { "good" : 1256, "bad" : 12 } }
    { "_id" : "10002", "desc" : "java", "tag" : [ "IT", "编程语言" ], "comment" : {"good" : 56, "bad" : 1 } }

    使用 in 查询:

    MongoDB Enterprise > db.user.find({_id:{$in:["10001","10002"]}})
    { "_id" : "10001", "desc" : "springboot开发框架", "tag" : [ "IT", "Spring" ], "comment" : { "good" : 1256, "bad" : 12 } }
    { "_id" : "10002", "desc" : "java", "tag" : [ "IT", "编程语言" ], "comment" : {"good" : 56, "bad" : 1 } }

    常用操作符:

    $gt:greater than  >

    $gte:gt equal  >=

    $lt:less than  <

    $lte:lt equal  <=

    $ne:not equal !=

    $eq:equal  =

    $in:in

    $nin:not in

    模糊查询,可使用正则表达式:

    MongoDB Enterprise > db.user.find({"desc":/spring/})
    { "_id" : "10001", "desc" : "springboot开发框架", "tag" : [ "IT", "Spring" ], "comment" : { "good" : 1256, "bad" : 12 } }

    3.5 更新文档

    MongoDB 使用 update() 和 save() 方法来更新集合中的文档。

    在3.2版本开始,MongoDB提供以下更新集合文档的方法:

    db.collection.updateOne() 向指定集合更新单个文档;

    db.collection.updateMany() 向指定集合更新多个文档;

    db.collection.replaceOne() 向指定集合替换单个文档;

    replaceOne() 与 updateOne() 的区别在与前者是替换整个文档,而后者是更新部分文档。这两个方法都只替换匹配的第一条记录,如果有多条记录匹配,可以使用 updateMany。

    MongoDB Enterprise > db.user.updateOne({"_id":"10001"},{$set:{"desc":"基于springboot开发框架"}})
    { "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }

    3.6 删除文档

    MongoDB remove()函数是用来移除集合中的数据。现在官方推荐使用 deleteOne() 和 deleteMany() 方法,如果使用 deleteMany({}) 方法时候没有指定任何参数,则表示删除该集合中的所有文档。

    MongoDB Enterprise > db.user.remove({"_id":"10003"})
    WriteResult({ "nRemoved" : 1 })

    四、MongoDB 和传统 SQL 术语比较

    MongoDB 中的术语与传统 SQL 的术语不太相同,但是之间有一定的对应关系。

    SQL术语 MongoDB术语 解释说明
    database database 数据库
    table collection 数据库表/集合
    row document 数据记录行/文档
    column field 数据字段/域
    index index 索引
    table joins / 表连接,MongoDB不支持
    primary key primary key 主键,MongoDB自动将_id字段设置为主键
  • 相关阅读:
    Fast AutoAugment阅读笔记
    object as point阅读笔记
    Hardware-in-the-loop End-to-end Optimization of Camera Image Processing Pipelines阅读笔记
    TP框架使用命令行
    shopee常见的刊登报错问题
    TP执行队列的命令
    正则匹配手机号码
    时间格式化转换
    使用fixed定位将元素(如按钮)悬浮在页面底部
    LNMP一键安装教程
  • 原文地址:https://www.cnblogs.com/cnjavahome/p/8424624.html
Copyright © 2020-2023  润新知