设为首页 加入收藏

TOP

十分钟了解MongoDB
2014-11-24 07:47:41 来源: 作者: 【 】 浏览:2
Tags:十分钟 了解 MongoDB

今天写写 MongoDB的事情。这货是一个document-orientied, 基本上使用的json进行交互的。他把那个形式很像json的东西叫做 BJSON. 里面有一些mongoDB自己定义的数据类型。这种数据形式在传输存储很方便。

首先介绍一下MongoDB的数据结构

database : 这个和mysql中的database一致。 默认使用的local, 可以自己创建新的。例如 在shell中写 db.xxx 然后就自动创建了xxx 这个collection

collection: 这个概念和mysql中的table保持一致。

document: 这个和mysql里的row或者 record保持一致。

这个是MongoDB的三个最主要的结构。

下面是如何使用。

下载安装

首先去 www.mongoDB.org 上下载一个mongoDB的最新版。然后解压到某个目录。然后使用命令行进入到该目录下。

创建 数据存储文件夹,这里可以直接创建一个 /data/db的文件夹(mkdir -p /data/db)。然后在命令行里执行如下命令启动mongodb server.

mongod --dbpath ./data/db
这样mongoDB就启动了,一般端口为 27017. 你可以使用help来修改Port等。这里就不过多介绍。

然后重新开一个命令窗口,使用命令进入到该目录下,执行下面语句启动mongoDB client.

mongo
如果使用的都是默认端口,这里就可以正常启动了。如果你修改了mongoDB server的端口,这里需要改成一致的。

数据库CRUD(Create, Retrieve, Update, Delete)操作

下面就是命令行选择database, 创建collection, 存储document。首先:

db

查看需要现有的database.
show dbs

使用ooo作为database
use ooo;

如果这里不写use ooo,那默认就是local.

然后是数据库的操作了:

1. 插入

var a = {"value":1,"value2":['a','b']}
var b = {"value":2}
var c = {"str":‘aaa’}
插入数据,xxxx是collection
db.xxxx.save(a);
下面也是插入数据
db.xxxx.insert(b);
db.xxxx.insert(c);

\\获取全部数据
db.xxxx.find()
获取一个数据
db.xxxx.findOne()

查询特定的记录

db.xxxx.find({"value":1})

\

\


3.更新操作

db.xxxx.update(
   { value: { $lt: 18 } },
   { $set: { status: "A" } },
   { multi: true }
)

这里 { value: { $lt: 18 } },是说  value < 18,  { $set: { status: "A" } },是说要set status 为A, 如果没有那个域,则创建出来。
{ multi: true } 则是处理多个。

\

\

4. 删除操作

db.xxxx.remove({"value":1})
删除value 为1 的document.

\

\

结束语

MongoDB的强大之处在于 JSON串里想写什么就可以写什么。 相同的collection中document可以完全不相同。(但是为了后期的维护,还是尽量相同。)这是稀疏数据库的一大优势。

建索引MongoDB有很多种,可以建立unique 索引, TTL 索引(数据会过期失效,默认为此索引), 多列组合索引,空间索引,全文索引和hash索引。这里的多列索引和mysql的一致。对于全文索引,mongoDB建议不要在生产环境(线上环境)中使用,因为这个建索引很慢,性价比不高。

对于mongoDB来说,他的索引可以使用{"backgroup":true}来进行后台异步创建,也可以使用前台索引。但是前台索引会对性能造成极大的影响,所以mongoDB官方文档建议新起一个mongoDB server的实例进行创建。然后使用副本启动的方法将创建好的索引作为副本启动。

对于mongoDB,安全性做的比较粗略。也是对于操作,对于database等特殊数据需要分配权限。因为没有视图等概念,这些安全性做的比mysql来说粒度大了一些。但是mongoDB支持SSL 方式访问,也支持kerberos认证。不过Kerberos认证现在只有微软那边在用,之前K3,K4被破,人心惶惶。现在不知道情况如何。

今天就先介绍这么多吧。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇endecastudio安装部署指南 下一篇得到当前周的开始日期或其他的日期

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·请问c语言刚入门,该 (2025-12-26 10:21:04)
·python 编程怎么定义 (2025-12-26 10:21:01)
·09-指 针 (一)-c语言 (2025-12-26 10:20:58)
·About - Redis (2025-12-26 08:20:56)
·Redis: A Comprehens (2025-12-26 08:20:53)