(转载)MongoDB数据库存储

小编 2026-06-06 阅读:1047 评论:0
每个 MongoDB 服务器都支持多个数据库。每个数据库都是相对独立的,并且出于安全性和...

每个 MongoDB 服务器都支持多个数据库。每个数据库都是相对独立的,并且出于安全性和为了方便管理,数据库的数据也独立存储。

Mongo元数据

在MongoDB数据库中名字空间 <dbname>.system.* 是包含多种系统信息的特殊集合(Collection),如下:

  • system.namespaces 列出所有名字空间。
  • system.indexes 列出所有索引。
  • 附加的名字空间(namespace)和索引(index)的元数据保存在database.ns中,是混淆后的形式。
  • system.profile 包含数据库概要(profile)信息。
  • system.users 列出所有可访问数据库的用户。
  • local.sources 包含复制对端(slave)的服务器信息和状态。
  • 对象的结构信息存储在对象内,参见BSON

对于修改系统集合中的对象有如下限制。在{{system.indexes}}插入数据,可以创建索引。但除此之外该表信息是不可变的(特殊的drop index命令将自动更新相关信息)。 {{system.users}}是可修改的。  {{system.profile}}是可删除的。

注意: $ 是保留字符。请不要在名字空间或字段的名字中使用。内部的索引相关的集合将在名字中使用 $ 字符。而这些集合保存为B-tree集的形式(无法用直接查询)。

数据库指令

介绍

Mongo数据库有数据库指令(database command)概念。使用这些命令可以让数据库执行某中操作或是返回有关数据库当前状态的某些信息。

  • [数据库指令列表]

一条指令将被作为针对 $cmd 集合的一种特殊的查询语句发送到数据库。数据库执行后,将返回一个单文档对象作为命令的返回结果,可以用 findOne() 获得。

基本的命令格式为:

db.$cmd.findOne( { <commandname>: <value> [, options] } ); 

在命令行环境下,可以执行:

db.runCommand( { <commandname>: <value> [, options] } ); 

例如,检查当前数据库profile level的设置,可以执行:

> db.runCommand({profile:-1}); { "was" : 0.0 , "ok" : 1.0 } 

多数数据库驱动提供了对数据库指令的封装方法,以方便使用。例如mongo shell 提供

> db.getProfilingLevel() 0.0 

该方法的实现如下:

> print( db.getProfilingLevel ) function () { var res = this._dbCommand({profile:-1}); return res ? res.was : null; } > print( db._dbCommand ) function (cmdObj) { return this.$cmd.findOne(cmdObj); } 

多数指令都有类似的简便用法 - 参见各数据库驱动的相关文档。

特权指令

某些特殊的操作只有管理员才能执行。这些特殊的操作将在{{admin}}数据库中执行。

> use admin; > db.runCommand("shutdown"); // shut down the database 

如果当前数据库不是'admin', 你可以直接使用_adminCommand方法去操作:

> db._adminCommand("shutdown"); 

(对于这个操作,还有简便用法db.shutdownServer。)

获得指令帮助信息

使用commandHelp命令去获得某个指令的相关信息:

> db.commandHelp("datasize") help for: datasize example: { datasize:"blog.posts", keyPattern:{x:1}, min:{x:10}, max:{x:55} } NOTE: This command may take awhile to run 

(某些指令还没有完整的帮助信息.)

一个数据库可以包括一个或多个集,每个集中可以存放文档对象,同时可以为操作这些内容设置一个可选的安全认证。

  • Mongo元数据
  • 数据库指令
    • 克隆数据库
版权声明

本文仅代表作者观点,不代表百度立场。
本文系作者授权百度百家发表,未经许可,不得转载。

热门文章
  • 机房智能化温湿度解决方式之POE供电以太网温湿度传感器

    机房智能化温湿度解决方式之POE供电以太网温湿度传感器
    机房智能化温湿度解决方式之POE供电以太网温湿度传感器 北京盈创力和电子科技有限公司 智能型TCP网口温湿度记录仪 北京IP网络温湿度记录仪厂家,北京盈创力和 北京智能型TCP网口温湿度记录仪IP网络温湿度记录仪是一种新型的基于TCP/IP协议双绞线以太网标准温湿度采集模块,利用它可以实现现场温度值、相对湿度值的采集,同时利用其自身的RJ45通信接口可以方便地和机房监控主机或交换机集线器进行联网。 工作于-40℃~85℃工业级带...
  • Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering

    Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering
    Problem Statement 我们考虑一个具有马尔可夫性质、非线性、非高斯的状态空间模型(State Space Model):对于一个时间序列上的观测结果{yt,t∈N}\\{ y_t , t \\in N \\}{yt​,t∈N},我们认为每个观测结果yty_tyt​的生成依赖于一个无法直接观察的隐变量xt∈{xt,t∈N}x_t \\in \\{x_t , t \\in N \\}xt​∈{xt​,t∈N},即:p(...
  • HTTP状态保持的原理

    HTTP状态保持的原理
    a)在用户登录之后,浏览器返回响应的时候会在响应中添加上cookieb)浏览器接收到cookie之后会自动保存c)当用户再次请求同一服务器中的其他网页的时候,浏览器会自动带上之前保存的cookied)服务接收到请求之后可以请 request 对象中取到cookie 判断当前用户是否登录  Http是无状态的,就是连接时数据互通,关闭后...
  • Hive 系统函数及示例

    Hive 系统函数及示例
    查看所有系统函数 show functions; 函数分类 内置函数【系统函数】 数学函数: floor、round、ceil、cos、log2等 字符串函数: length、reverse、trim、lower、get_json_object、repeat等 收集函数: size 转换函数: cast 日期函数: year、month、datediff、date、date_add等 条件函数: coalesce、case…w...
  • CSRF的原理和防范措施

    CSRF的原理和防范措施
    a)攻击原理:i.用户C访问正常网站A时进行登录,浏览器保存A的cookieii.用户C再访问攻击网站B,网站B上有某个隐藏的链接或者图片标签会自动请求网站A的URL地址,例如表单提交,传指定的参数iii.而攻击网站B在访问网站A的时候,浏览器会自动带上网站A的cookieiv.所以网站A在接收到请求之后可判断当前用户是登录状态,所以...
标签列表