`
somefuture
  • 浏览: 1090873 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

(转载)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元数据
  • 数据库指令
    • 克隆数据库
分享到:
评论

相关推荐

    Pro MongoDB Development

    MongoDB是一种高性能、开源的NoSQL数据库,它以文档的形式存储数据,而不是传统的表结构,这使得MongoDB在处理大量数据和复杂查询方面具有很大的灵活性。本书《Pro MongoDB Development》深入介绍了MongoDB的使用...

    MongoDB学习笔记(一) MongoDB介绍与安装方法

    一、前言  最近开始学习非关系型数据库MongoDB,却在博客园上找不到比较系统的教程,很多资料都要去查阅英文网站,效率比较低下。...它在许多场景下可用于替代传统的关系型数据库或键/值存储方式。Mongo使用C++开发。

    对SQL说不 NoSQL的数据库 技术革命 转载.doc

    许多NoSQL数据库,如Hadoop、Voldemort、MongoDB等,都是开源项目,这使得更多的开发者能够参与到这些技术的改进和创新中,同时也降低了企业采用新技术的门槛。 然而,NoSQL并非完美无缺,它在事务处理、数据一致性...

    使用open source产品组装你的web应用架构(转载)

    关系型数据库如MySQL适合结构化数据,NoSQL数据库如MongoDB适用于半结构化或非结构化数据。根据应用需求,可以进行主从复制、分布式集群等配置以提高可用性和可扩展性。 5. **缓存**:Redis和Memcached提供高速缓存...

    【转载】java实现的局域网聊天软件

    - **数据库存储**:如果需要保存聊天记录,可能需要连接数据库,如MySQL或MongoDB,使用JPA或MyBatis进行数据操作。 综上所述,构建一个Java实现的局域网聊天软件涉及众多技术,包括Java网络编程、多线程、IO流、...

    练习打字的一个源文件,可用于网页端

    为了实现这些功能,开发者可能使用了诸如JavaScript(可能搭配React或Vue等前端框架)进行用户界面开发,Node.js或Python等后端语言处理数据,数据库如MySQL或MongoDB存储用户信息,以及Git进行版本控制。...

    H3_AP202106221499263958_1.pdf

    3. 数据存储与管理:报告中提供的数据必须存储在可靠的数据库管理系统(如MySQL, PostgreSQL, MongoDB等)中,并且需要进行高效的数据管理以保证数据的准确性和可访问性。 二、房地产行业研究与专业指导 1. 市场...

    treeking_node_qsbk:这是一个用node写的仿糗事百科

    3. **数据库操作**:为了存储和检索用户提交的糗事,项目可能使用了MongoDB、MySQL等数据库,需要了解NoSQL或SQL的基本概念和操作。 4. **前端技术**:HTML、CSS和JavaScript(可能包括React、Vue或Angular等库/框架...

Global site tag (gtag.js) - Google Analytics