美文网首页前端开发mongoDB
Mongo for NodeJS developer学习笔记

Mongo for NodeJS developer学习笔记

作者: ifcode | 来源:发表于2014-08-17 20:29 被阅读675次

    这门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吧。

    相关文章

      网友评论

        本文标题:Mongo for NodeJS developer学习笔记

        本文链接:https://www.haomeiwen.com/subject/hdhktttx.html