淘先锋技术网

首页 1 2 3 4 5 6 7

NoSQL数据库(五)01-mongoDB入门——介绍与应用场景、安装与可视化工具 & 使用node-mongodb-native进行增删改查

第四章 mongoDB

介绍

MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案

MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。

mongoD是关系型数据库的补充。

应用场景

适用场景

  1. 用在应用服务器的日志记录,查找起来比文本灵活,导出也很方便。也是给应用练手,从外围系统开始使用MongoDB。
  2. 主要用来存储一些监控数据,No schema 对开发人员来说,真的很方便,增加字段不用改表结构,而且学习成本极低。
  3. 网站数据:适合实时的插入,更新与查询,并具备网站实时数据存储所需的复制及高度伸缩性。
  4. 大尺寸、低价值的数据:使用传统的关系数据库存储一些数据时可能会比较贵,在此之前,很多程序员往往会选择传统的文件进行存储。

不适用场景

  1. 高度事物性的系统:例如银行或会计系统。传统的关系型数据库目前还是更适用于需要大量原子性复杂事务的应用程序。

如何选择

如果上述有1个 Yes,可以考虑 MongoDB,2个及以上的 Yes,选择MongoDB绝不会后悔。

在这里插入图片描述

安装

sudo brew install mongodb

增删改查

三个概念

  • 数据库
  • 集合: 类似关系型数据库里的表
  • 文档: 一条一条的数据

const insertDocuments = function(db, callback) {
  // Get the documents collection
  const collection = db.collection('documents');
  // Insert some documents
  collection.insertMany([
    {a : 1, b: 2}, {a : 2, b: 2}, {a : 3, b:3}
  ], function(err, result) {
    console.log("Inserted 3 documents into the collection");
    callback(result);
  });
}

const selectData = function(db, callback) {
    const collection = db.collection('documents');
    var whereStr = { b: 2 };
    collection.find(whereStr).toArray((err, result) => {
        callback(result)
    })
}

const updateData = function(db, callback) {
    const collection = db.collection('documents');

    var whereStr = {
        a: 1
    };
    var updataStr = {
        $set: {
            b: 1
        }
    };

    collection.update(whereStr, updataStr, function() {
        callback();
    });
}

const delData = function(db, callback) {
    const collection = db.collection('documents');
    var whereStr = { a: 1 };
    collection.remove(whereStr, (err, result) => {
        callback(result)
    });
}

实例

app.js

const MongoClient = require('mongodb').MongoClient;  // 引入库
// const assert = require('assert');

// Connection URL
const url = 'mongodb://localhost:27017';   // mongo默认端口 27017

// Database Name
const dbName = 'myproject';  // 定义数据库的名称  
const client = new MongoClient(url);   // 实例化一个客户端  并且连接数据库

const insertDocuments = function(db, callback) {
  // Get the documents collection
  const collection = db.collection('documents');  //概念:集合  建了一张 documents这样的表
  // Insert some documents
  collection.insertMany([
    {a : 1, b: 2}, {a : 2, b: 2}, {a : 3, b:3}  // 添加3条数据, 字段有2个分别是 a,b
  ], function(err, result) {
    console.log("Inserted 3 documents into the collection");
    callback(result);
  });
}

const selectData = function(db, callback) {
    const collection = db.collection('documents');
    var whereStr = { b: 2 };   // 语法非常的简洁
    collection.find(whereStr).toArray((err, result) => {
        callback(result)
    })
}

const updateData = function(db, callback) {
    const collection = db.collection('documents');

    var whereStr = {
        a: 1
    };
    var updataStr = {
        $set: {
            b: 1
        }
    };

    collection.update(whereStr, updataStr, function() {
        callback();
    });
}

const delData = function(db, callback) {
    const collection = db.collection('documents');
    var whereStr = { a: 1 };
    collection.remove(whereStr, (err, result) => {
        callback(result)
    });
}

// Use connect method to connect to the server
client.connect(function(err) {
  console.log("Connected successfully to server");

  const db = client.db(dbName);  // 创建一个数据库 叫做 myproject 或者链接
// 1. 建表  
//   insertDocuments(db, function() {  // 插入数据
//     client.close();
//   });

//   selectData(db, function(data) {
//     console.log(data);
//     client.close();
//   });

//   updateData(db, function() {
//     client.close();
//   });
  delData(db, function() {
    client.close();
  });
});