MongoDb 初涉

安装 MongoDB

  • 下载安装:
    https://www.mongodb.com/download-center#community

  • 安装教程:
    https://docs.mongodb.com/manual/administration/install-on-linux/

  • 命令行安装:

    • Ubuntu:
    sudo apt install mongodb
    
    • Fedora:
    sudo dnf install mongodb
    

RDBMS 和 NoSQL

RDBMS,关系数据库管理系统(Relational Database Management System),常见的有 SQL ServerOracleMySQL 等,其特点为:

  1. 数据以表格的形式出现
  2. 每行为各种记录名称
  3. 每列为记录名称所对应的数据域
  4. 许多的行和列组成一张表单
  5. 若干的表单组成database

NoSQL,不仅仅是 SQL(Not Only SQL),常见的有 MongoDbRedis 等,通常没有统一的架构,因为相较于关系型数据库,NoSQL 数据库舍弃了部分功能,而且不需要进过 SQL 层的解析,所以性能非常高。不过反过来,关系型数据库可以使用 SQL 语句做到更复杂的功能,所以实际如何抉择,还是需要根据业务实际应用场景来。

基本命令

打开终端,输入:

$ mongo

进入 MongoDb 终端交互界面,以下为基本命令,可以自行尝试。如果出现 Fail to connect to 127.0.0.1 之类的错误,请检查是否开启了 mongod 服务,详见 stackoverflow/failed-to-connect 以及 stackoverflow/failed-to-connect

~> 常用命令

- -
use demo 创建或切换到数据库 demo
show dbs 查看本地所有数据库及大小
db 查看当前数据库名
db.dropDatabase() 删除当前数据库
db.album.insert({
"title": "MongoDb Demo",
"info": ["mongodb", "json", "nodejs"]
})
插入数据( json 对象格式)到 album 集合
show tables 查看当前数据库的所有集合名
db.album.drop() 删除当前数据库的 album 集合
db.album.find() 查看当前数据库 album 集合的数据,有 findOne() 函数表示只返回第一个找到的文档数据
db.album.insertOne({"bilibili":2233}) 向 album 集合插入单条数据
db.album.insertMany([{
"puddy":"puddy"
}, {
"buka":"buka"
}])
向 album 集合插入多条数据
db.album.update({
"buka": "buka"
}, {$set:
"buka": "comic"
}}, {, , })
第二行:update的查询条件

第三、四行:update的对象和一些更新的操作符(如$,$inc...)等

upsert:可选,这个参数的意思是,如果不存在update的记录,是否插入为新纪录,true为插入,默认是false,不插入。

multi:可选,默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来的所有记录全部更新。

writeConcern:可选,抛出异常的级别。
db.album.save({_id: ObjectId("59df57025858b8a0a0834e64"), "pika": "pika"}) 整个替换此 id 的记录
db.album.find().pretty() 查看最近一次修改的文档数据
db.album.remove({"pika":"pika"}, , ) 前面为查询条件,isJustOne为 true 或 1 时表示只删除一个,writeConcern 为抛出异常级别
db.album.find().limit(7) 读取前 7 条数据
db.album.find().skip(2) 跳过前两条数据

~> 操作符

- -
$gt 大于
$lt 小于
$gte 大于等于
$lte 小于等于
$ne 不等于
$eq 等于
$or
$type 类型

Node.js 与 MongoDb

  • 先在 Node.js 工程目录下安装 MongoDb 的 npm 包

    npm install mongodb --save
    

~> 实例代码

'use strict';

const MongoClient = require('mongodb').MongoClient;
const assert = require('assert');

// 27017 is the default port to start MongoDb
// use demo
let url = 'mongodb://127.0.0.1:27017/demo';

let MongoDocument = (function () {

  return {
    insert: function (db, options, callback) {
      
      // db.collection.insert(data)
      let collection = db.collection(options.name);

      // let dataLength = Object.keys(options.data).length;
      let dataLength = options.data.length;
      if (dataLength) {
        collection.insertMany(options.data, (err, result) => {
          assert.equal(null, err);
          assert.equal(result.result.n, dataLength);
          assert.equal(result.result.ok, dataLength);
          callback(err, result);
        });
      } else {
        collection.insertOne(options.data, (err, result) => {
          assert.equal(null, err);
          assert.equal(result.result.n, dataLength || 1);
          assert.equal(result.result.ok, dataLength || 1);
          callback(err, result);
        });
      }
    }
  };
})();

// Connect Database
MongoClient.connect(url, (err, db) => {
  assert(true, err);
  console.log('Connected successfully to MongoDb server');
  let options = {
    name: 'create',
    data: {
      'title': 'demo',
      'info': 'nodejs'
    }
  };

  MongoDocument.insert(db, options, (err, result) => { });

  db.close();
});

module.exports = MongoDocument;

node 运行一下,就可以在 MongoDb 的命令行交互界面:

$ mongo
# >

> use demo
# switched to db demo

> db.create.find()
# { "_id" : ObjectId("59e0d768b7a973234c243333"), "title" : "demo" }

More ... Please refer to

MongoDb Node.js API Document: http://mongodb.github.io/node-mongodb-native/

你可能感兴趣的:(MongoDb 初涉)