数组查询

数组查询

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

MongoDB Shell 经常使用的操作的更多相关文章

  1. 【mongodb系统学习之八】mongodb shell常用操作

    八.mongodb  shell常用基础操作(每个语句后可以加分号,也可以不加,看情况定(有的工具中可以不加),最好是加): 1).进入shell操作界面:mongo,上边已有演示: 2).查看当前使 ...

  2. MongoDB Shell 经常使用操作

    数组查询 数组查询 MongoDB 中有子文档的概念.一个文档中能方便的嵌入子文档,这与关系性数据库有着明显的不同,在查询时,语法有一些注意点. 样例代码,假如我们的一个集合(tests)中存在标签键 ...

  3. MongoDB 基础 -安全性-(权限操作)

    和其他所有数据库一样,权限的管理都差不多一样.mongodb存储所有的用户信息在admin 数据库的集合system.users中,保存用户名.密码和数据库信息.mongodb默认不启用授权认证,只要 ...

  4. MongoDB入门三:MongoDB shell

    MongoDB shell MongDB shell是一个功能完备的Javascript解释器,可以运行Javascript程序.也可以用于连接MongoDB服务器,执行脚本,对数据库进行操作.类似于 ...

  5. MongoDB:Replica Set 之操作日志 Oplog

    转载地址:http://francs3.blog.163.com/blog/static/4057672720121133328120/ 之前的blog  学习了 MongoDB 主从搭建,以及节点管 ...

  6. [转载]MongoDB学习(三):MongoDB Shell的使用

    MongoDB shell MongoDB自带简洁但功能强大的JavaScript shell.JavaScript shell键入一个变量会将变量的值转换为字符串打印到控制台上. 下面介绍基本的操作 ...

  7. MongoDB副本集的常用操作及原理

    本文是对MongoDB副本集常用操作的一个汇总,同时也穿插着介绍了操作背后的原理及注意点. 结合之前的文章:MongoDB副本集的搭建,大家可以在较短的时间内熟悉MongoDB的搭建和管理. 下面的操 ...

  8. 【mongodb系统学习之三】进入mongodb shell

    三. 进入mongodb shell(数据库操作界面) : 1).在mongodb的bin目录下输入./mongo,默认连接test数据库,连接成功会显示数据库版本和当前连接的数据库名,如图: 2). ...

  9. MongoDB shell 介绍

    MongoDB shell 介绍 MongoDB自带javascript shell, 可在shell中使用命令行与MongoDB实列交互.shell可以执行管理操作,检查运行实列等等操作. 一:如何 ...

随机推荐

  1. POJ2739_Sum of Consecutive Prime Numbers【筛法求素数】【枚举】

    Sum of Consecutive Prime Numbers Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 19350 Ac ...

  2. php中模拟多继承如何实现

    php中模拟多继承如何实现 一.总结 一句话总结:其实你继承别人也是想调用别人类里面的方法和属性,所以可以这样做:这本类中创建目标类的对象,然后通过这个对象来调用方法和属性,这样比继承来的方便. 二. ...

  3. Jquery浅克隆与深克隆是什么

    Jquery浅克隆与深克隆是什么 一.总结 一句话总结:克隆的那些标签内容就是对应元素的html,事件就是那些绑定的事件. 1.jquery克隆的时候的注意事项是什么? 元素数据(data)内对象和数 ...

  4. Opencv分水岭算法——watershed自动图像分割用法

    分水岭算法是一种图像区域分割法,在分割的过程中,它会把跟临近像素间的相似性作为重要的参考依据,从而将在空间位置上相近并且灰度值相近的像素点互相连接起来构成一个封闭的轮廓,封闭性是分水岭算法的一个重要特 ...

  5. (一)RabbitMQ消息队列-RabbitMQ的优劣势及产生背景

    原文:(一)RabbitMQ消息队列-RabbitMQ的优劣势及产生背景 本篇并没有直接讲到技术,例如没有先写个Helloword.我想在选择了解或者学习一门技术之前先要明白为什么要现在这个技术而不是 ...

  6. 【solr基础教程之九】客户端 分类: H4_SOLR/LUCENCE 2014-07-30 15:28 904人阅读 评论(0) 收藏

    一.Java Script 1.由于Solr本身可以返回Json格式的结果,而JavaScript对于处理Json数据具有天然的优势,因此使用JavaScript实现Solr客户端是一个很好的选择. ...

  7. Objective-C基础笔记(8)Foundation经常使用类NSString

    一.创建字符串的方法 void stringCreate(){ //方法1 NSString *str1 = @"A String!"; //方法2 NSString *str2 ...

  8. Django之文章归档

    1.任务描述:将博文按照时间月份归档 2.源代码: views.py def getPage(request, article_list): paginator = Paginator(article ...

  9. 关于 rman duplicate from active database 搭建dataguard--系列一

    关于 rman duplicate from active database.详细操作实际为backup as copy .会拷贝非常多空块.对于那些数据库数据文件超过100G的都不是非常建议用:在非 ...

  10. 浏览器对象模型(BOM)是什么?(体系结构+知识详解)(图片:结构)

    浏览器对象模型(BOM)是什么?(体系结构+知识详解)(图片:结构) 一.总结 1.BOM操作所有和浏览器相关的东西:网页文档dom,历史记录,浏览器屏幕,浏览器信息,文档的地址url,页面的框架集. ...