数组查询

数组查询

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. 深入浅出React Native 1: 环境配置
  2. Android 全局获取 Context 与使用 Intent 传递对象
  3. 将Win10变回Win7/WinXP界面
  4. 20145304 Java第七周学习报告
  5. AT&amp;T asm之Qt使用
  6. use case
  7. 使用Go开发一个简单的服务器程序
  8. 图片懒加载 lazyload
  9. wpf 父控件透明子控件不透明
  10. 为什么要for循环以及for循环的流程
  11. ComboBox绑定Dictionary做为数据源
  12. python函数高级特性
  13. Android开发学习总结(二)——使用Android Studio搭建Android集成开发环境
  14. id选择器为变量时
  15. 使用git将项目上传到github(最简单方法)
  16. js图片预加载、有序加载
  17. 深入探究JFreeChart
  18. BZOJ3091 城市旅行 LCT
  19. SpringMVC源码阅读:属性编辑器、数据绑定
  20. 『Python』pycharm常用设置

热门文章

  1. ProgressBar-style属性分析
  2. HTML基础第八讲---序列卷标
  3. 1.2 Use Cases中 Website Activity Tracking官网剖析(博主推荐)
  4. 用jquery获取单选按钮选中的内容 和 获取select下拉列表选中的值
  5. jdk目录详解及其使用方法
  6. 人工智能计算器AI Calculator 3.3.0 具体破解思路&amp;amp;教程
  7. CentOS 6 通过DVD快速建立本地YUM源
  8. window.print()打印网页(一)
  9. Diskpart工具应用两则:MBR/GPT分区转换 &amp;amp; 基本/动态磁盘转换
  10. md5解密猜想