美文网首页
MongoDb 初涉

MongoDb 初涉

作者: 零度冰华 | 来源:发表于2017-10-14 00:15 被阅读31次

安装 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"
}}, {<upsert:Boolean>, <multi:Boolean>, <writeConcern:String>})
第二行: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:Boolean>, <writeConcern:String>) 前面为查询条件,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 初涉

    安装 MongoDB 下载安装:https://www.mongodb.com/download-center#c...

  • 初涉.

  • 初涉

    环境造就格局预定义人生, 人们忽略换位想掌控乾坤。 骄傲而固执的人认为世间没有对错, 平静的银河系中无数的星系在黑...

  • 初涉npm

    NPM是什么 NPM(node package manager Node包管理器)以往的Web开发中,JS文件数量...

  • 诗坛初涉

    诗坛初涉 写了多少首, 我从未细数; 改了多少次, 也未在意。 怎知道, 语言是否传统。 怎知道, 又有多少层次...

  • 初涉webpack

    什么是webpack? 本质上,webpack 是一个现代 JavaScript 应用程序的静态模块打包器(mod...

  • 诗坛初涉

    七绝 初涉诗坛 天外孤鸿-詹 初登大雅君休笑,巧艺沽空盼论心。 一字恩深同再造,推敲賈岛始成吟。

  • 工笔初涉

    小田老师的书画课前阵子开始教画画了,我们这帮学生三天打鱼两天晒网的,当然也不着急,慢悠悠的学,慢悠悠的画。尤其是工...

  • 初涉管理

    1.自己的立场非常重要 在复杂的机关当中,每个人都有自己的立场领导有领导的立场。二级单位有二级单位的立场,但是要时...

  • 初涉谈判

    最近的一次谈判,费劲周折才安排好时间,也计划了很多次,预想过各种场景,设定好了初步谈判目的、优选方案、次选方案和最...

网友评论

      本文标题:MongoDb 初涉

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