博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MongoDB Shell 经常使用的操作
阅读量:6156 次
发布时间:2019-06-21

本文共 2694 字,大约阅读时间需要 8 分钟。

 数组查询

数组查询

MongoDB 中有子文档的概念,一个文档中能方便的嵌入子文档,这与关系性数据库有着明显的不同。在查询时,语法有一些注意点。

样例代码,假如我们的一个集合(tests)中存在标签键,有例如以下模式:

tags: [ObjectId]
查询含有某个标签 ID 的文档
db.tests.find({
tags: tagId});
我如今有一组标签 tagIds。即是数组,须要查询含有该数组中任一元素的文档,此时须要用到 $in 操作符
db.tests.find({
tags: {
$in: tagIds}});
如需唯一匹配该数组,与通常查询无异
db.tests.find({
tags: tagIds});
如不考虑顺序关系影响,即同一时候含有 tagIds 中的每一个元素,用 $all

db.tests.find({

tags: {
$all: tagIds}});

 MongoDB数据导出及导入

我眼下用到的各自是 mongodump 和 mongorestore,他们语法挺相似。

导出

mongodump --host localhost:27017 /data/backup/csser.com/csser.3-9/
表示将当前数据库导出到 csser.3-9 文件夹中去,导入用 mongorestore 就可以恢复。

导入

mongorestore --host localhost:27017 /data/backup/csser.com/csser.3-9/
表示将 
csser.3-9 文件夹下的数据导入到 MongoDB 中。

 安全停止并退出MongoDB

安全停止并退出 MongoDB

不管怎样都要避免直接 kill -9 MongoDB 进程,如需正常安全的退出,向进程发送 SIGINT 或 SIGTERM 信号,如:

$ sudo kill -2 pid // SIGINT// 或$ sudo kill pid // SIGTERM

 查看集合占用空间

查看集合占用空间

> db.sessions.dataSize()22658540

 监控和释放MongoDB占用的内存

监控和释放 MongoDB 占用的内存

查看内存使用情况:

PRIMARY> use csserswitched to db csserPRIMARY> db.serverStatus().mem{
"bits" : 64, "resident" : 82, "virtual" : 5366, "supported" : true, "mapped" : 2463, "mappedWithJournal" : 4926}
释放内存:

db.runCommand({
closeAllDatabases:1})

 查看MongoDB连接数

查看 MongoDB 连接数

> db.serverStatus().connections{
"current" : 10, "available" : 809 }

 进入Shell

进入 Shell

通过 mongo 命令连接数据库后,会自己主动进入 MongoDB Shell,默认连接的是 test 数据库。进行例如以下操作了解 Shell 基本指令:

> helpdb.help()                    #查看 db 方法db.mycoll.help()             #查看集合方法rs.help()                    #查看 replica set 方法help admin                   #管理员帮助help connect                 #连接数据库帮助help keys                    #快捷键帮助help misc                    #了解 misc help mr                      #mapreduceshow dbs                     #打印本server存在的数据库名称列表show collections             #打印当前数据库的集合列表show users                   #打印当前数据库的用户show profile                 #打印 1s 内的 system.profileshow logs                    #打印 logger 名称show log [name]              #打印内存中最新的一条日志记录。[name] 默觉得 'global'use 
#切换数据库db.foo.find() #列出集合 foo 中的对象列表db.foo.find( {
a : 1 } ) #列出集合 foo 中满足条件 a== 1 的对象列表it #查看 find 返回列表的其余部分DBQuery.shellBatchSize = x #设置 shell 默认显示的项的个数exit #退出 mongodb shell
MongoDB shell 内嵌了 Javascript 解析器,所以能够在当中书写 Javascript 代码。

 连接数据库

连接数据库

mongo [options] [db address] [文件名称 (以.js结尾)]

db address 能够仅仅指定数据库名(比方:csser),此时连接本地数据库csser。

也能够这样:192.169.0.5:27018/csser。表明连接192.169.0.5server27018port的csser数据库,port号能够省略,默觉得27017。

假设指定文件名称,在不指定 --shell 參数的情况下,进程在运行完这些js文件之后会自己主动退出,文件名称必须以.js结尾。

查看 MongoDB 版本号:

mongo --version

在执行 mongo 命令时不自己主动连接数据库:

mongo --nodb

转载地址:http://dsifa.baihongyu.com/

你可能感兴趣的文章
IIS7下使用urlrewriter.dll配置
查看>>
并行程序设计学习心得1——并行计算机存储
查看>>
bulk
查看>>
C++ 迭代器运算
查看>>
【支持iOS11】UITableView左滑删除自定义 - 实现多选项并使用自定义图片
查看>>
【算法笔记】多线程斐波那契数列
查看>>
java8函数式编程实例
查看>>
jqgrid滚动条宽度/列显示不全问题
查看>>
在mac OS10.10下安装 cocoapods遇到的一些问题
查看>>
css技巧
查看>>
Tyvj 1728 普通平衡树
查看>>
javascript性能优化
查看>>
多路归并排序之败者树
查看>>
java连接MySql数据库
查看>>
转:Vue keep-alive实践总结
查看>>
深入python的set和dict
查看>>
C++ 11 lambda
查看>>
Android JSON数据解析
查看>>
DEV实现日期时间效果
查看>>
java注解【转】
查看>>