安装 MongoDB
-
安装教程:
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 Server、Oracle、MySQL 等,其特点为:
- 数据以表格的形式出现
- 每行为各种记录名称
- 每列为记录名称所对应的数据域
- 许多的行和列组成一张表单
- 若干的表单组成database
NoSQL,不仅仅是 SQL(Not Only SQL),常见的有 MongoDb、Redis 等,通常没有统一的架构,因为相较于关系型数据库,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/
网友评论