数组查询

数组查询

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 csser
switched to db csser
PRIMARY> 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 基本指令:

> help
db.help() #查看 db 方法
db.mycoll.help() #查看集合方法
rs.help() #查看 replica set 方法
help admin #管理员帮助
help connect #连接数据库帮助
help keys #快捷键帮助
help misc #了解 misc
help mr #mapreduce show dbs #打印本server存在的数据库名称列表
show collections #打印当前数据库的集合列表
show users #打印当前数据库的用户
show profile #打印 1s 内的 system.profile
show logs #打印 logger 名称
show log [name] #打印内存中最新的一条日志记录。[name] 默觉得 'global'
use <db_name> #切换数据库
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

最新文章

  1. Block使用
  2. jQuery.ajaxSetup() 函数详解
  3. easyui datagrid加载json
  4. C/C++ unit testing tools (39 found)---reference
  5. AJAX顺序输出
  6. 从 NavMesh 网格寻路回归到 Grid 网格寻路。
  7. jdk配置及maven配置
  8. swift菜鸟入门视频教程-04-集合类型
  9. 数据库-MYSQL安装配置和删除
  10. 2018-2019-2 20175235 实验二《Java面向对象程序设计》实验报告
  11. Static,重载,List的知识点
  12. 大杂烩 -- 简析TCP的三次握手与四次分手
  13. php 建站 多域名配置 自定义重定向
  14. bzoj千题计划179:bzoj1237: [SCOI2008]配对
  15. find -size 查出指定文件大小的命令
  16. LinkedList详解
  17. snip
  18. 网络服务器搭建的那些事(PV QPS Throughput) 转载
  19. Git 学习(五)远程仓库
  20. C语言 函数参数不确定时 需要用到va_start和va_end函数

热门文章

  1. HDU 1013 Digital Roots 题解
  2. link和@import引入外部样式的区别
  3. angular风格指南
  4. gerrit docker
  5. iOS开发NSOperation 三:操作依赖和监听以及线程间通信
  6. 【C++竞赛 E】xxx和yyy的旅行
  7. 5.8 pprint--美观地打印数据
  8. 【u006】海战
  9. [React Router v4] Intercept Route Changes
  10. 【hdu2457】ac自动机 + dp