MongoDB-数据库:文档操作、文件导入与导出操作指令大全

本文详细介绍了MongoDB中的数据库操作,包括创建、查看、删除、版本确认,以及集合的创建、查看状态、删除。文档操作涉及插入、更新、删除和查询,涵盖了写入策略、查询条件和排序等内容。此外,还包括备份与恢复、导入导出的方法。
摘要由CSDN通过智能技术生成

文章目录

数据库操作

命令描述
use DATA_BASE不存在则创建数据库,存在则进入
show dbs查看所有数据库
db查看当前所在数据库
db.dropDatabase()删除当前所在数据库
db.version()查看数据库版本
db.getMongo()查看当前数据库连接地址

集合操作

创建集合

db.createCollection(name, [capped, size, max])

字段类型描述
name字符串* 要创建的集合名称
capped布尔(可选)若为 True,创建固定大小的集合,当达到最大值时,它会自动覆盖最早的文档
size数值(可选)为固定集合指定一个最大值,即字节数
max数值(可选)指定固定集合中包含文档的最大数量

插入文档时,首先检查固定集合的 size 字段,然后检查 max 字段

在 MongoDB 中,你可以不用显式地创建集合。当你插入文档时,MongoDB 会自动创建集合

查看集合

# 查看所有集合
show collections
show tables

查看指定集合状态

db.<Collection_name>.stats()

删除集合

db.<Collection_name>.drop()

文档操作

插入文档

db.COLLECTION_NAME.insert(document)  # 插入一条

db.COLLECTION_NAME.insertOne( # 插入一条, 3.2+版本 语法
<document>,
{
writeConcern: <document>
}
)

db.COLLECTION_NAME.insertMany( # 插入多条
[<documeny 1>, <document 2>, …],
{
writeConcern: <document>,
ordered: <boolean>
}
)

参数描述
document要写入的文档
writeConcern写入策略,默认为1,要求确认写操作,0不要求
ordered是否按顺序写入,默认 true,按顺序

更新文档

db.COLLECTION_NAME.update(
	<query>,
    <update>,
    {
    	upsert: <boolean>,
    	multi: <boolean>,
    	writeConcern: <document>
    }
)

db.COLLECTION_NAME.updateOne(<query>,<update>, …) # 更新一条数据
db.COLLECTION_NAME.updateMany(<query>,<update>, …) # 更新多条数据

参数描述
query查询条件
updateupdate对象和一些 更新的操作符
upsert如果不存在条件查询不到,是否插入数据,默认false
multi默认false,只更新查询到的第一条记录,置为 true 则全部更新
操作符描述
$set指定一个键的值,不存在则创建它
$unset从文档中移除指定的键
$inc原有基础增加或减少
$rename重命名字段,不可与已有字段重复,否则会覆盖

使用过程中,建议使用 update 代替 insert,数据存在则替换,不存在则插入

删除文档

db.COLLECTION_NAME.drop({
      <query>,
      {
           justOne: <boolean>
      }
})

db.COLLECTION_NAME.drop({}) # 删除集合中所有数据

db.COLLECTION_NAME.deleteOne(<query>) # 删除符合条件的一条数据
db.COLLECTION_NAME.deleteMany(<query>) # 删除符合条件的所有数据

参数描述
query根据指定条件删除
justOne默认false,删除所有匹配的文档,置为 true,只删除第一个匹配的文档

查询文档

db.COLLECTION_NAME.find(<query>, [<projection>])     # 查询全部数据
db.COLLECTION_NAME.find(<query>).pretty()  # 以格式化方式展示数据
db.COLLECTION_NAME.findOne(<query>)  # 查询一条数据

projection 参数

db.col.find(query, {title: 1, by: 1}) # inclusion模式 指定返回的键,不返回其他键
db.col.find(query, {title: 0, by: 0}) # exclusion模式 指定不返回的键,返回其他键

inclusion, exclusion 两者不可混用

_id (主键) 字段默认为 1,可指定 {_id:0} 来不输出 _id 字段值

_id 不受 inclusion 或 exclusion 模式影响,可随意指定

  • 比较运算

    操作格式
    等于$eq
    小于$lt
    小等于$lte
    大于$gt
    大等于$gte
    不等于$ne
    db.COLLECTION_NAME.find({"age": {$lte: 18}})  # 年龄小于等于18的
    
  • 逻辑运算

    # and
    db.col.find({
        {key: value, key, value}
    })
    

db.col.find({
$and: [
{key: value}, {key: value}
]
})

or

db.col.find({
$or: [
{key: value}, {key: value}
]
})

in

db.col.find({
'age': {$in: [18, 20]}
})

not

$not 操作符只会影响其它操作符, 不能独立检查字段和文档

查询 age 不大于 9

db.col.find({
“age”:{KaTeX parse error: Expected '}', got 'EOF' at end of input: not:{gt:9}}
})

  • limit & skip

    # limit() 读取指定数量的数据记录
    db.col.find().limit(number)
  • skip() 跳过指定数量的数据记录

    db.col.find().skip(number)

    skip 方法只适合小数据量分页,如果数据量过大,效率就会非常低,因为 skip 是一条一条数过去的

  • sort 排序

    # 对指定 key 进行排序
    # 1  升序
    # -1 降序
    
  • db.col.find({}).sort({key:1})

    limit,skip,sort 放在一起的时候,先执行 sort,然后 skip,最后 limit

  • 模糊查询

    # 查询包含 xxx
    db.col.find({key:/xxx/})
    
  • 查询以 xxx 开头

    db.col.find({key:/^xxx/})

    查询以 xxx 结尾

    db.col.find({key:/xxx$/})

    查询忽略大小写

    db.col.find({key:/xxx/i})

    正则查询

    db.col.find({key: {$regex: /\d+/}})

  • count 统计

    # 集合数据量
    db.col.count()
  • 查询结果的数据量

    db.col.find().count()

    备份与恢复

    • 备份

      mongodump -h dbhost -d dbname -o dbdirectory
      

    -h : MongoDB 所在服务器地址, ip+port, 默认为 localhost:27017

    -d : 需要备份的数据库名, 不指定则备份全部数据库

    -o : 备份的数据存放位置

    –collection: 备份指定集合

  • 恢复

    mongorestore -h <hostname><:port> -d dbname --dir path
  • -h : MongoDB 所在服务器地址

    -d :需要恢复的数据库实例

    -drop : 恢复的时候,先删除当前数据,然后恢复备份的数据

    –dir : 备份的文件目录

    导入与导出

    • mongoexport 导出

      # -h      连接的数据库地址
      # --port  数据库端口, 默认 27017
      # -u      账号
      # -p      密码
      # -d      指定数据库
      # -c      指定集合
      # -f      选择导出的字段 例: key1,key2, ...
      # --type  输出的文件类型, csv 或 json
      # -o      导出的文件名
      # -q      查询条件
      # --skip  跳过指定数量的数据
      # --limit 读取指定数量的数据
      # --sort  执行字段进行排序
      
    • mongoimport 导入

      # -h        连接的数据库地址
      # --port    数据库端口, 默认 27017
      # -u        用户名
      # -p        密码
      # -d        指定数据库
      # -c        指定集合
      # -f        指定导入的字段
      # --type    指定导入的文件类型
      # --file    导入的文件名称
      # --headerline  导入csv文件, 指明第一行为列名, 不需要导入
      
    ## 案例操作
    C:\Users\Administrator>mongoexport -h 10.10.34.163 -d committed -c committed_info -f Attraction_name,score,address
    ent_time,commentId,user_name,content --type csv -o command.csv
    2021-01-06T20:53:23.812+0800    connected to: 10.10.34.163
    2021-01-06T20:53:24.808+0800    [........................]  committed.committed_info  0/39432  (0.0%)
    2021-01-06T20:53:25.602+0800    [########################]  committed.committed_info  39432/39432  (100.0%)
    2021-01-06T20:53:25.602+0800    exported 39432 records
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值