MongoDB使用手册

MongoDB使用手册

theme: csdn
highlight: MongoDB使用手册

简介:

MongoDB是一个基于分布式文件存储的数据库。由C++语言编写,旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是一个介于关系型数据库和非关系型数据库之间的产品,是非关系型数据库当中功能最丰富,最像关系型数据库的。

一. 安装

官网点击下载
网盘点击下载

1. 下载MongoDB安装包,选择windows版;

在这里插入图片描述

2. 运行MongoDB安装包并选择自定义安装,设置好安装路径(可以选择自定义安装路径);
3. 配置MongoDB,让MongoDB作为服务运行,配置好数据目录和日志目录;
4. 最终可取消MongoDB Compass的安装选项(不取消安装极慢),需要可自行安装;
5. 双击mongo.exe 即可以运行MongoDB自带客户端,并使用MongoDB:

在这里插入图片描述

6. 连接成功后效果如下:

在这里插入图片描述

7. 如果需要移除MongoDB服务, 使用管理员权限运行cmd工具, 并输入如下命令结束进程:
> sc.exe delete MongoDB
8. 为了方便可通过网盘下载视图化的客户端工具进行使用。

二. MongoDB的使用

介绍:MongoDB是非关系型数据库当中最像关系型数据库的,所以我们通过它与关系型数据库的对比。
SQL数据库 MongoDB数据库 概念
database database 数据库
table collection 数据表(集合List)
row document 数据记录行(文档)
column field 数据字段(域)
index index 索引
primary key primary key 主键,MongoDB自动将_id字段设置为主键
1. 创建库 use database_name 如果database_name数据库存在便进入该数据库中,如果不存在创建该数据库并进入数据库中。
> use database_name
switched to db database_name
2. 删除库 dropDatabase() 来删除(删除需慎重)
删除前:
> show dbs
admin   0.000GB
config  0.000GB
local   0.000GB
mysql   0.000GB
test    0.000GB
删除:
> use mysql
switched to db mysql
> db
mysql
> db.dropDatabase()
{
    
     "dropped" : "mysql", "ok" : 1 }
删除后:
> show dbs
admin   0.000GB
config  0.000GB
local   0.000GB
test    0.000GB
3. 创建集合(sql中表的概念)db.createCollection()
> use dbtest
switched to db dbtest
> show tables
> db.createCollection('a1')
{
    
     "ok" : 1 }
> show tables
a1
4. 删除集合(sql中表的概念)db.tables_name.drop()
> show tables
a1
> db.a1.drop()
true
> show tables
>
5. 插入文档document - sql新增记录行 db.table_name.insert(document)
> db
dbtest
> db.a1.find()
{
    
     "_id" : ObjectId("5fd092ffc0996d1ec790c72a") }
> db.a1.insert({
    
    'username':'xiaoming','age':19,'password':'123','create_time':'2020-12-09 17:00:00'})
WriteResult({
    
     "nInserted" : 1 })
> db.a1.find()
{
    
     "_id" : ObjectId("5fd092ffc0996d1ec790c72a") }
{
    
     "_id" : ObjectId("5fd09590c0996d1ec790c72c"), "username" : "xiaoming", "age" : 19, "password" : "123", "create_time" : "2020-12-09 17:00:00" }
6. 更新文档 - 更新数据记录行
db.collection.update(<query>,<update>,{
    
    multi: <boolean>})
# query:修改的查询条件,类似于SQL中的WHERE部分
# update:更新属性的操作符,类似与SQL中的SET部分
# multi:设置为true时会更新所有符合条件的文档,默认为false只更新找到的第一条
> db
dbtest
> db.a1.find()
{
    
     "_id" : ObjectId("5fd092ffc0996d1ec790c72a") }
> db.a1.insert({
    
    'username':'xiaoming','age':19,'password':'123','create_time':'2020-12-09 17:00:00'})
WriteResult({
    
     "nInserted" : 1 })
> db.a1.find()
{
    
     "_id" : ObjectId("5fd092ffc0996d1ec790c72a") }
{
    
     "_id" : ObjectId("5fd09590c0996d1ec790c72c"), "username" : "xiaoming", "age" : 19, "password" : "123", "create_time" : "2020-12-09 17:00:00" }
> db.a1.update({
    
    'username':'xiaoming'},{
    
    $set:{
    
    'age':20}},{
    
    multi:true})
WriteResult({
    
     "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.a1.find()
{
    
     "_id" : ObjectId("5fd092ffc0996d1ec790c72a") }
{
    
     "_id" : ObjectId("5fd09590c0996d1ec790c72c"), "username" : "xiaoming", "age" : 20, "password" : "123", "create_time" : "2020-12-09 17:00:00" }
> 
7. 删除文档 - 删除数据记录行 remove()
db.collection.remove(<query>,{
    
    justOne: <boolean>})
# query:删除的查询条件,类似于SQL中的WHERE部分
# justOne:设置为true只删除一条记录,默认为false删除所有记录
> db.a1.find()
{
    
     "_id" : ObjectId("5fd092ffc0996d1ec790c72a") }
{
    
     "_id" : ObjectId("5fd09590c0996d1ec790c72c"), "username" : "xiaoming", "age" : 20, "password" : "123", "create_time" : "2020-12-09 17:00:00" }
{
    
     "_id" : ObjectId("5fd09b0b7cb5fe86451090bc"), "username" : "xiaoming", "age" : 19, "password" : "123", "create_time" : "2020-12-09 17:00:00" }
> db.a1.remove({
    
    'username':'xiaoming'},{
    
    justOne:true})
WriteResult({
    
     "nRemoved" : 1 })
> db.a1.find()
{
    
     "_id" : ObjectId("5fd092ffc0996d1ec790c72a") }
{
    
     "_id" : ObjectId("5fd09b0b7cb5fe86451090bc"), "username" : "xiaoming", "age" : 19, "password" : "123", "create_time" : "2020-12-09 17:00:00" }
>
8. 通过collection对象的find()方法来查询文档
mongo符号 含义 mongo格式 SQL语句
: 等于 {:} where a = ‘b’
$lt 小于 {:{$lt:}} where a < 10
$gt 大于 {:{$gt:}} where a > 20
$lte 小于等于 {:{$lte:}} where a <= 10
$gte 大于等于 {:{$gte:}} where a >= 20
$ne 不等于 {:{$ne:}} where a != 30
db.collection.find(query, projection)
# query:查询条件,类似于SQL中的WHERE部分
# projection:可选,使用投影操作符指定返回的键
> db.a1.find()
{
    
     "_id" : ObjectId("5fd092ffc0996d1ec790c72a") }
{
    
     "_id" : ObjectId("5fd09b0b7cb5fe86451090bc"), "username" : "xiaoming", "age" : 19, "password" : "123", "create_time" : "2020-12-09 17:00:00" }
{
    
     "_id" : ObjectId("5fd09c8c7cb5fe86451090bd"), "username" : "xiaoming", "age" : 22, "password" : "1234", "create_time" : "2020-12-09 17:00:00" }
{
    
     "_id" : ObjectId("5fd09c967cb5fe86451090be"), "username" : "xiaoming", "age" : 343, "password" : "1234", "create_time" : "2020-12-09 17:00:00" }
# 按条件查询 -- 等于
> db.a1.find({
    
    'age':22})
{
    
     "_id" : ObjectId("5fd09c8c7cb5fe86451090bd"), "username" : "xiaoming", "age" : 22, "password" : "1234", "create_time" : "2020-12-09 17:00:00" }
# 按条件查询 -- 小于
> db.a1.find({
    
    'age':{
    
    $lt:20}})
{
    
     "_id" : ObjectId("5fd09b0b7cb5fe86451090bc"), "username" : "xiaoming", "age" : 19, "password" : "123", "create_time" : "2020-12-09 17:00:00" }
# 按条件查询 -- 小于等于
> db.a1.find({
    
    'age':{
    
    $lte:19}})
{
    
     "_id" : ObjectId("5fd09b0b7cb5fe86451090bc"), "username" : "xiaoming", "age" : 19, "password" : "123", "create_time" : "2020-12-09 17:00:00" }
# 按条件查询 -- 大于
> db.a1.find({
    
    'age':{
    
    $gt:19}})
{
    
     "_id" : ObjectId("5fd09c8c7cb5fe86451090bd"), "username" : "xiaoming", "age" : 22, "password" : "1234", "create_time" : "2020-12-09 17:00:00" }
{
    
     "_id" : ObjectId("5fd09c967cb5fe86451090be"), "username" : "xiaoming", "age" : 343, "password" : "1234", "create_time" : "2020-12-09 17:00:00" }
# 按条件查询 -- 大于等于
> db.a1.find({
    
    'age':{
    
    $gte:343}})
{
    
     "_id" : ObjectId("5fd09c967cb5fe86451090be"), "username" : "xiaoming", "age" : 343, "password" : "1234", "create_time" : "2020-12-09 17:00:00" }
# 按条件查询 -- 不等于
> db.a1.find({
    
    'age':{
    
    $ne:343}})
{
    
     "_id" : ObjectId("5fd092ffc0996d1ec790c72a") }
{
    
     "_id" : ObjectId("5fd09b0b7cb5fe86451090bc"), "username" : "xiaoming", "age" : 19, "password" : "123", "create_time" : "2020-12-09 17:00:00" }
{
    
     "_id" : ObjectId("5fd09c8c7cb5fe86451090bd"), "username" : "xiaoming", "age" : 22, "password" : "1234", "create_time" : "2020-12-09 17:00:00" }
# 按条件查询 -- and
> db.a1.find({
    
    'age':{
    
    $ne:343},'username':'xiaoming'})
{
    
     "_id" : ObjectId("5fd09b0b7cb5fe86451090bc"), "username" : "xiaoming", "age" : 19, "password" : "123", "create_time" : "2020-12-09 17:00:00" }
{
    
     "_id" : ObjectId("5fd09c8c7cb5fe86451090bd"), "username" : "xiaoming", "age" : 22, "password" : "1234", "create_time" : "2020-12-09 17:00:00" }
> db.a1.find({
    
    'age':{
    
    $ne:343},'username':'xiaoming1'})
>
# 按条件查询 -- or
> db.a1.find({
    
    $or:[{
    
    'age':{
    
    $ne:343}},{
    
    'username':'xiaoming'}]})
{
    
     "_id" : ObjectId("5fd092ffc0996d1ec790c72a") }
{
    
     "_id" : ObjectId("5fd09b0b7cb5fe86451090bc"), "username" : "xiaoming", "age" : 19, "password" : "123", "create_time" : "2020-12-09 17:00:00" }
{
    
     "_id" : ObjectId("5fd09c8c7cb5fe86451090bd"), "username" : "xiaoming", "age" : 22, "password" : "1234", "create_time" : "2020-12-09 17:00:00" }
{
    
     "_id" : ObjectId("5fd09c967cb5fe86451090be"), "username" : "xiaoming", "age" : 343, "password" : "1234", "create_time" : "2020-12-09 17:00:00" }
# 按条件查询 -- and+or
> db.a1.find({
    
    'age':{
    
    $lt:22}},{
    
    $or:[{
    
    'age':{
    
    $ne:343}},{
    
    'username':'xiaoming'}]})
{
    
     "_id" : ObjectId("5fd09b0b7cb5fe86451090bc") }
> db.a1.find({
    
    'age':{
    
    $gt:22}},{
    
    $or:[{
    
    'age':{
    
    $ne:343}},{
    
    'username':'xiaoming'}]})
{
    
     "_id" : ObjectId("5fd09c967cb5fe86451090be") }
9. 其他操作
limit(指定长度数据)与skip(跳过某些数量)
> db.a1.find().limit(2)
{
    
     "_id" : ObjectId("5fd092ffc0996d1ec790c72a") }
{
    
     "_id" : ObjectId("5fd09b0b7cb5fe86451090bc"), "username" : "xiaoming", "age" : 19, "password" : "123", "create_time" : "2020-12-09 17:00:00" }

> db.a1.find().limit(3).skip(2)
{
    
     "_id" : ObjectId("5fd09c8c7cb5fe86451090bd"), "username" : "xiaoming", "age" : 22, "password" : "1234", "create_time" : "2020-12-09 17:00:00" }
{
    
     "_id" : ObjectId("5fd09c967cb5fe86451090be"), "username" : "xiaoming", "age" : 343, "password" : "1234", "create_time" : "2020-12-09 17:00:00" }
> db.a1.find().limit(3).skip(1)
{
    
     "_id" : ObjectId("5fd09b0b7cb5fe86451090bc"), "username" : "xiaoming", "age" : 19, "password" : "123", "create_time" : "2020-12-09 17:00:00" }
{
    
     "_id" : ObjectId("5fd09c8c7cb5fe86451090bd"), "username" : "xiaoming", "age" : 22, "password" : "1234", "create_time" : "2020-12-09 17:00:00" }
{
    
     "_id" : ObjectId("5fd09c967cb5fe86451090be"), "username" : "xiaoming", "age" : 343, "password" : "1234", "create_time" : "2020-12-09 17:00:00" }
sort(排序)升序 1,降序 -1
# 升序
db.a1.find().sort({
    
    'age':1})
{
    
     "_id" : ObjectId("5fd092ffc0996d1ec790c72a") }
{
    
     "_id" : ObjectId("5fd09b0b7cb5fe86451090bc"), "username" : "xiaoming", "age" : 19, "password" : "123", "create_time" : "2020-12-09 17:00:00" }
{
    
     "_id" : ObjectId("5fd09c8c7cb5fe86451090bd"), "username" : "xiaoming", "age" : 22, "password" : "1234", "create_time" : "2020-12-09 17:00:00" }
{
    
     "_id" : ObjectId("5fd09c967cb5fe86451090be"), "username" : "xiaoming", "age" : 343, "password" : "1234", "create_time" : "2020-12-09 17:00:00" }

# 降序
> db.a1.find().sort({
    
    'age':-1})
{
    
     "_id" : ObjectId("5fd09c967cb5fe86451090be"), "username" : "xiaoming", "age" : 343, "password" : "1234", "create_time" : "2020-12-09 17:00:00" }
{
    
     "_id" : ObjectId("5fd09c8c7cb5fe86451090bd"), "username" : "xiaoming", "age" : 22, "password" : "1234", "create_time" : "2020-12-09 17:00:00" }
{
    
     "_id" : ObjectId("5fd09b0b7cb5fe86451090bc"), "username" : "xiaoming", "age" : 19, "password" : "123", "create_time" : "2020-12-09 17:00:00" }
{
    
     "_id" : ObjectId("5fd092ffc0996d1ec790c72a") }
索引 createIndex()
db.collection.createIndex(keys, options)
# background:建索引过程会阻塞其它数据库操作,设置为true表示后台创建,默认为false
# unique:设置为true表示创建唯一索引
# name:指定索引名称,如果没有指定会自动生成
# {
    
    'age':1}  1 :升序; -1 :降序
# 普通索引
> db.a1.createIndex({
    
    'age':1},{
    
    background:true}) 
{
    
    
        "createdCollectionAutomatically" : false,
        "numIndexesBefore" : 1,
        "numIndexesAfter" : 2,
        "ok" : 1
}

# 唯一索引
> db.a1.createIndex({
    
    '_id':1},{
    
    unique:true})
{
    
    
        "ok" : 0,
        "errmsg" : "The field 'unique' is not valid for an _id index specification. Specification: { ns: \"dbtest.a1\", v: 2, key: { _id: 1.0 }, name: \"_id_1\", unique: true }",
        "code" : 197,
        "codeName" : "InvalidIndexSpecificationOption"
}

# 查看索引 
> db.a1.getIndexes()
[
        {
    
    
                "v" : 2,
                "key" : {
    
    
                        "_id" : 1
                },
                "name" : "_id_",
                "ns" : "dbtest.a1"
        },
        {
    
    
                "v" : 2,
                "key" : {
    
    
                        "age" : 1
                },
                "name" : "age_1",
                "ns" : "dbtest.a1",
                "background" : true
        }
]
10. 聚合函数
操作符 描述
$sum 计算总和
$avg 计算平均值
$min 计算最小值
$max 计算最大值
# 计算总和
> db.a1.aggregate([{
    
    $group : {
    
    _id : "$by", sum_count : {
    
    $sum : 1}}}])
{
    
     "_id" : null, "sum_count" : 4 }
# 计算平均值
> db.a1.aggregate([{
    
    $group : {
    
    _id : "$by", avg_age : {
    
    $avg : "$age"}}}])
{
    
     "_id" : null, "avg_age" : 128 }
11. 正则表达式
# 不区分大小写的模糊查询,使用$options操作符
db.a1.find({
    
    title:{
    
    $regex:"elasticsearch",$options:"$i"}})

猜你喜欢

转载自blog.csdn.net/weixin_43869435/article/details/110938387