用node.js体验mongodb的初级教程

终于到了第四次了。

在第一部分中,我们学习了关于node.js的基本知识,并制作了一个简单的Web服务器。
在第二部分中,我们学习了如何将代码分割到其他文件中,并使用路由和文件系统来在HTML中进行显示等操作。
在第三部分中,我们尝试创建了一个简单的应用程序。

这次作为上一次应用程序的延续,我们尝试进行已保存数据的持久化(保存到数据库中)。
(为了避免变得很长,这次只连接到MongoDB)。

MongoDB是一种基于文档的NoSQL数据库系统。

这是一个与node.js兼容性良好的高速NoSQL数据库。

最近的NoSQL数据库包括键值存储(KVS)、文档导向数据库和列导向数据库等,而MongoDB是一种无模式的文档导向数据库。

通过不加入事务或关系(JOIN)功能,MongoDB实现高速且与键值存储(KVS)相当水平的性能。

特别对实时处理非常强劲,与node.js非常搭配完美。

MongoDB与RDB的对比

以下是RDB中使用的术语与MongoDB中使用的术语的对应关系。

RDBMongoDBdatabasedatabasetablecollectionrecorddocumentcolumnfieldindexindexprimary_key_id

需要记住的是,MongoDB是一个无模式的文档导向数据库。由于无模式,不需要像关系数据库一样进行列定义。

如果创建一个以关系型数据库(RDB)来管理用户的表,那么每个列的类型会被指定,比如id(整数型),name(字符串型)和created_at(日期时间型),因此每条记录都会包含相同类型的数据。

但是,对于MongoDB来说,可以为每个文档定义自由字段。

尝试使用node.js处理MongoDB。

首先,我想先安装并尝试连接。

$ npm install mongodb

实际上,在将测试数据放入数据库并进行获取的部分时,会变成这样的感觉。
我尝试将 config.db 中的数据库命名为 testdb。

var mongoClient = require('mongodb').MongoClient;
var config = require('./config');

mongoClient.connect("mongodb://localhost/" + config.db, function(err, db) {
  // エラー処理
  if (err) {
    return console.dir(err);
  }

  db.collection("users", function(err, collection) {
    if (err) {
      return console.dir(err);
    }

    // 挿入するデータ
    var docs = [
      {name: "山口",   score: 20},
      {name: "大田",   score: 80},
      {name: "長本",   score: 100},
    ];

    collection.insert(docs, function(err, result) {
      // エラー処理
      if (err) {
        return console.dir(err);
      }

    });

    // 検索する
    collection.find().toArray(function(err, items) {
      console.log(items);
    });

  });
});

我会尝试搜索

我们之前通过find()函数获取了全部的数据,现在让我们实际进行搜索,看看mongo是什么样的。

var mongoClient = require('mongodb').MongoClient;
var config = require('./config');

mongoClient.connect("mongodb://localhost/" + config.db, function(err, db) {
  // エラー処理
  if (err) {
    return console.dir(err);
  }

  db.collection("users", function(err, collection) {
    if (err) {
      return console.dir(err);
    }

    // 検索する
    collection.find({name: "長本"}).toArray(function(err, items) {
      console.log(items);
    });

  });
});

只需使用find指定条件,即可获取相应内容。

$ node mongo.js
[ { _id: 59b69c558e9ce1484773fffd, name: '長本', score: 100 } ]

这个结构很简单。

下次,我计划将上一次创建的应用程序的数据保存到mongodb,并尝试检索数据以实现数据的持久化。

广告
将在 10 秒后关闭
bannerAds