最近在公司项目中使用到了MongoDB数据库,在这里记录一下平时用到的一些指令或脚本,方便后面使用时查询操作。
工具脚本
实例启动脚本mongod
# 指定配置文件启动一个mongo实例mongod -f /app/etc/mongo.conf
#以下是单机模式基本配置conf文件内容:# 数据库文件位置dbpath=/data/mongo/dbs/directoryperdb=true# 数据库日志位置logpath=/data/mongo/logs/m.log# 错误日志采用追加模式logappend=true# 进程文件pidfilepath=/data/mongo/mongodb.pid# 是否以守护进程方式启动fork=true# 端口号port=27017# 绑定地址,本机地址bind_ip=127.0.0.1# 配置占用缓存大小 18GwiredTigerCacheSizeGB=18
#无任何参数 默认访问地址 127.0.0.1:27017mongo --username mongo --password mongo@123#访问 127.0.0.1:27017 mongo实例 账号:mongo 密码:mongo@123mongo --port 27017 --host 127.0.0.1 --username mongo --password mongo@123#执行js文件mongo --port 27017 --host 127.0.0.1 ./mongo_delete_coll.js
#连接mongo实例 127.0.0.1:27017 访问Layne库 test_coll集合数据 导出到目录下/app/data/# -d 指定数据库# -c 指定集合名称 不指定的话则导出数据库所有集合# -o 指定输出目录mongodump --port 27017 --host 127.0.0.1 -d Layne -c test_coll -o /app/data/# 导出文件内容 bson数据文件 和一个元数据文件-rw-r--r-- 1 root root 327061504 Sep 20 11:28 test_coll.bson-rw-r--r-- 1 root root 588 Sep 20 11:28 test_coll.metadata.json
数据导入mongorestore
若指定了.bson文件则只导入指定文件数据
若指定到目录,则会导入目录下所有.bson文件数据
# mongorestore <options> <directory or file to restore># --drop 指令 在导入集合时,会先删除集合在导入# --noIndexRestore 导入数据集合时,不恢复索引数据 .metadata.json文件# -d 恢复到数据库# -c 恢复到指定集合名称 不指定的话则恢复目录下所有.bson后缀文件#连接mongo实例 127.0.0.1:27017 访问Layne库 test_coll集合数据 导入目录下/app/data/Layne/test_coll.bson文件数据mongorestore --port 27017 --host 127.0.0.1 -d Layne -c test_coll /app/data/Layne/test_coll.bson
语句操作
连接mongo数据库
# 连接mongo数据库mongo --host=127.0.0.1 --port=27017# 以下是连接成功返回内容:# MongoDB shell version v4.4.6# connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb# Implicit session: session { "id" : UUID("f2d5c372-a7aa-42c6-8893-a18acdeb529a") }# MongoDB server version: 4.4.6
查看所有数据库列表 show dbs
# 查看所有数据库列表show dbs# 以下是返回内容:数据库名称 | 存储大小# Layne 0.000GB# admin 0.000GB# config 0.000GB# jasonTest 0.000GB# local 0.000GB
使用指定数据库 use <dbname>
# 使用Layne数据库use Layne# 以下是返回内容:# switched to db One
查看数据库下所有集合列表 show tables | show collections
#查看当前数据库下所有集合列表show tablesshow collections
删除集合
# 删除Layne集合数据 删除集合后 会释放内存,当对集合进行delete删除数据操作时,并不会释放内存db.Layne.drop()
查询集合数据量 count
#方式一db.coll_test.count({})#方式二db.coll_test.countDocuments({条件参数json})
查询集合一条数据
#查看集合coll_test一条数据db.coll_test.findOne()
查询集合数据并格式化输出 pretty
# 查看集合coll_test一条数据 格式化输出db.coll_test.find({'macid':"12345678"}).limit(1).pretty()
查询条件进行排序 sort -1:倒序 1:正序
db.coll_test.find({}).sort({"ctime":-1}).limit(2).pretty()
分页查询参数 skip,limit skip从0开始计算
db.coll_test.find({}).sort({"ctime":1}).limit(2).skip(0).pretty()
模糊查询条件,利用正则方式 $regex,效率有点低
# 模糊匹配包含1192的数据内容 简写模式db.coll_test.find({"macid":/1192/}).limit(2).pretty()# 模糊匹配包含1192的数据内容 完整模式 $options: 'x' 代表忽略大小写敏感db.coll_test.find({"macid": { $regex: /1192/, $options: 'x' }}).limit(2).pretty()
模糊查询条件,利用文本搜索方式$text 需要在查询的字段上建立text属性索引。这种方式查询效率比正则方式快,但是存储空间会占用很多,是利用空间换时间的概念。
# 模糊匹配包含1192的数据内容db.coll_test.find({$text:{$search:"1192"}}).limit(2).pretty()

文章转载自程序员Layne,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




