前端开发mongoDB

Mongo for NodeJS developer学习笔记

2014-08-17  本文已影响675人  ifcode

这门mongo university的公开课于本月12号正式开始了。从名字就可以看出,这是一门入门级课程,结合nodejs来介绍mongodb。对于nosql数据库我了解不多,自己一直接触到的都是传统的MySQL或是postgreSQL。随着学习发展方向逐渐向前端转移,类似mongo这样可以便捷处理JSON的数据库也成为前进道路上必须了解的技术。那么就跟着我一起来一探mongo的究竟吧。

Week1 - Introduction

第一周是群众喜闻乐见的概括性介绍。总体来说,mongo有三大特点:

  1. 非关系型。前面说过了,mongo是nosql型的非传统数据库。
  2. mongo实际上是一个JSON文件的存储库,所以mongo里存储的都是标准JSON对象。
  3. 可编程。既然存储的是JSON,自然可以轻易编程来改变其结构。

和传统的SQL数据库相比,mongo有两个不支持的特性:

  1. 不支持JOINS。不存在关系,自然也无法JOIN了。
  2. 不支持TRANSACTIONS。这一点也是和JSON特性有关,后面的课程会做详细说明。

mongo主要由mongo数据库和mongo shell组成。数据库部分是本课程学习的重点,后面的课程会逐渐展开。mongo shell是一个基于google V8的运行在客户端的shell程序,可用来对数据库做各种管理和操作,也支持JS编程。mongo shell的概念有些类似node,都是运行在客户端的JS运行环境。他们的区别在于mongo shell是同步执行的的,而node是异步的。

mongo的安装已经完全傻瓜化了,各位自行上官网脑补吧。这里要注意的是,尽量选择64位版。32位版本对文件尺寸有天然的限制,会对大规模的部署应用造成不便。(不过对本课程来说32位也足够应付了)。

由于本人不使用windows系统,所以没有观看windows安装配置的部分。这里只以mac/linux为例说明各种操作。

mongo安装完毕后,最好在home目录下创建一个数据库目录作为mongo的默认存储路径:

mkdir -p /data/db

然后在终端输入mongod就可以启动mongo数据库了。mongo shell的启动指令是mongo,启动shell后就可以在>提示符后作数据库操作了。

这里例举几个常用的操作:

use db_name             // 切换至db_name数据库
db.collection.find()    // 从collection中选择部分的文档,并返回一个指向选择文件的指针
db.collection.findOne() // 在collection中选择一个符合条件的文档,findOne返回的是文档本身而不是指针
db.collection.insert()  // 向collection中插入一个JSON对象
show dbs                // 现实所有数据库
list collections        // 列出该数据所有collection
mongorestore dump       // 将dump文件导入数据库

find和findOne操作还可以附加查询条件,不过应付第一周的作业,直接用就可以了。详细的使用方法后面几周会逐渐介绍的。

JSON入门

我对JSON已经有一定了解,这里就不再重复细节了。需要的同学请自行上http://www.json.org/查询其标准。

简单地说,JSON就是由键值序列组成的JS对象集合。JSON中只有Array和map(也叫做对象)这两种结构,但值可以是任意类型,JSON对象也可以任意嵌套成复杂对象。

这里介绍几个好用的JSON工具:

Mongo和node应用

在node应用中使用mongo,需要使用nodejs driver进行相互间的通信。这个driver的安装也是非常简单的:

npm install mongodb

然后就可以在node应用的代码中加上:

var MongoClient = require('mongodb')

来调用mongo的应用接口了。下面附上一个完整的例子,从test数据库的coll集合中返回并打印第一个对象:

var MongoClient = require('mongodb');

MongoClient.connect('mongodb://localhost:27017/test', function (err, db) {
    if (err) throw err;
    
    db.collection('coll').findOne({}, function (err, doc) {
        if (err) throw err;
        
        console.dir(doc);
        
        db.close();
    });
});

对于熟悉node的人来说,mongo的应用接口操作起来还是相当直观顺手的。

好了,第一周就到这里了。作业都很简单,十分钟内完全可以搞定。让我们期待第二周CRUD吧。

上一篇下一篇

猜你喜欢

热点阅读