MongoDB 入门操作手册

image

这次不废话了,直接上干货。

img

linux 环境搭建

MongoDB 官方提供了各种 linux 的发行版本,强烈建议你去官方下载,不要从乱七八糟的渠道下载乱七八糟的安装包。

下载地址:https://www.mongodb.com/download-center#community

安装过程(基于 Ubuntu - 16.04 - 64位)

curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.6.tgz  # 下载
tar -zxvf mongodb-linux-x86_64-3.0.6.tgz                                 # 解压
mv  mongodb-linux-x86_64-3.0.6/ /usr/local/mongodb                       # 将解压包拷贝到指定目录
export PATH=/usr/local/mongodb/bin:$PATH                                 # 添加到 PATH 路径

创建数据库目录

数据库目录在安装过程中不会自动创建,需要你手动找一个你觉得合适的地方创建 data 目录。

sudo mkdir -p /data/db               # 我选择创建在根目录下

划重点/data/db 是 MongoDB 默认的启动的数据库路径。

如果你觉得放在根目录下不爽,可以通过 --dbpath 来指定。

mongod --dbpath <其他目录>             # <其他目录> 替换成你觉得爽的数据目录

MongoDB后台管理 Shell

输入命令 mongo

当你进入 mongoDB 后台后,它默认会链接到 test 数据库。

# mongo
MongoDB shell version: 2.6.10
connecting to: test
> 

基本概念

文档

文档是 MongoDB 中数据的基本单元,理解起来很简单,就是一组数据有序的放在一起就是文档。

例如:

单键值文档 {"userName":"WuJiaYi"}

多键值文档 {"_id" : ObjectId("58097dfe7e6d64baca4847365"), "name" : "WuJiaYi", "add" : "China" }

集合

多个文档放在一起就是集合。

数据库

多个集合放在一起就是数据库。

关系如下图所示:

image

shell 部分命令表

show dbs 显示所有数据库。

> show dbs      # 新创建的数据库不会显示。需要写入一些数据,才会显示。
admin  (empty)
local  0.078GB
test   0.078GB
> 

db 显示当前数据库。

> db 
test
> 

use 切换 或 创建数据库。

> use local     # 如果数据库不存在,则创建数据库,否则切换到指定数据库。
switched to db local
> db
local
> 

db.dropDatabase() 删除数据库。

> use test             # 切换到 test 数据库
switched to db test
> db.dropDatabase()     # 删除当前的数据库
{ "dropped" : "test", "ok" : 1 }
> show dbs              # test 数据库被删除了
admin  (empty)
local  0.078GB
> 

db.createCollection("NAME") 创建集合。

> db.createCollection("test")
{ "ok" : 1 }
>

show collections 显示当前数据库的集合。

> show collections
system.indexes
wujiayi
wweeww
> 

db.NAME.drop() 删除集合。

> show collections    # 显示所有集合
system.indexes
wujiayi
wweeww
> db.wujiayi.drop()   # 删除 wujiayi 这个集合
true
> show collections    # wujiayi 集合已经被删除了 
system.indexes
wweeww
> 

db.COL_NAME.insert(DOC) 插入文档。

>db.col.insert({title: 'MongoDB 手册',
    name: '吴佳轶',
    url: 'http://www.wujiayi.vip',
    add: 'Beijing',
})

db.COL_NAME.update(DOC) 更新文档。

>db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}},{multi:true})  # col是集合的名字

db.COL_NAME.remove(DOC,NUMBER) 删除文档。

>db.col.remove({'title':'MongoDB'},1)     # 查找符合 title 为 MongoDB 的文档,删除一条。
WriteResult({ "nRemoved" : 1 })           # 删除了两条数据

db.COL_NAME.find().pretty() 查询所有文档。

> db.col.find().pretty()   # 格式化查询所有文档
> db.col.findOne()         # 查询一条数据
> db.col.find()            # 非格式化查询

Node.js 连接 MongoDB

创建数据库

如果数据库不存在则创建。

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/WuJiaYi";
 
MongoClient.connect(url, function(err, db) {
  if (err) throw err;
  console.log("数据库已创建!");
  db.close();
});

创建合集

var MongoClient = require('mongodb').MongoClient;
var url = 'mongodb://localhost:27017/WuJiaYi';
MongoClient.connect(url, function (err, db) {
    if (err) throw err;
    console.log('数据库已创建');
    var dbase = db.db("WuJiaYi");
    dbase.createCollection('data', function (err, res) {
        if (err) throw err;
        console.log("创建集合!");
        db.close();
    });
});

插入数据

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";
 
MongoClient.connect(url, function(err, db) {
    if (err) throw err;
    var dbo = db.db("WuJiaYi");
    var myobj = { name: "吴佳轶", url: "www.wujiayi.vip" };
    dbo.collection("data").insertOne(myobj, function(err, res) {
        if (err) throw err;
        console.log("文档插入成功");
        db.close();
    });
});

插入多条数据

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";
 
MongoClient.connect(url, function(err, db) {
    if (err) throw err;
    var dbo = db.db("WuJiaYi");
    var myobj =  [
        { name: '吴佳轶', url: 'http://www.wujiayi.vip', type: 'cn'},
        { name: '魔法世界', url: 'http://www.magicworld.vip', type: 'ch'},
        { name: '魔法学校', url: 'http://www.magicshool.vip', type: 'ch'}
       ];
    dbo.collection("data").insertMany(myobj, function(err, res) {
        if (err) throw err;
        console.log("插入的文档数量为: " + res.insertedCount);
        db.close();
    });
});

查询数据

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";
 
MongoClient.connect(url, function(err, db) {
    if (err) throw err;
    var dbo = db.db("WuJiaYi");
    dbo.collection("data"). find({}).toArray(function(err, result) { // 返回集合中所有数据
        if (err) throw err;
        console.log(result);
        db.close();
    });
});

查询指定条件的数据

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";
 
MongoClient.connect(url, function(err, db) {
    if (err) throw err;
    var dbo = db.db("WuJiaYi");
     var whereStr = {"name":'吴佳轶'};  // 查询条件
    dbo.collection("data").find(whereStr).toArray(function(err, result) {
        if (err) throw err;
        console.log(result);
        db.close();
    });
});

更新数据

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";
 
MongoClient.connect(url, function(err, db) {
    if (err) throw err;
    var dbo = db.db("WuJiaYi");
    var whereStr = {"name":'吴佳轶'};  // 查询条件
    var updateStr = {$set: { "url" : "http://wujiayi.vip" }};
    dbo.collection("data").updateOne(whereStr, updateStr, function(err, res) {
        if (err) throw err;
        console.log("文档更新成功");
        db.close();
    });
});

更新多条数据

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";
 
MongoClient.connect(url, function(err, db) {
    if (err) throw err;
    var dbo = db.db("WuJiaYi");
    var whereStr = {"type":'ch'};  // 查询条件
    var updateStr = {$set: { "url" : "http://www.magicworld.vip" }};
    dbo.collection("data").updateMany(whereStr, updateStr, function(err, res) {
        if (err) throw err;
         console.log(res.result.nModified + " 条文档被更新");
        db.close();
    });
});

删除数据

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";
 
MongoClient.connect(url, function(err, db) {
    if (err) throw err;
    var dbo = db.db("WuJiaYi");
    var whereStr = {"name":'吴佳轶'};  // 查询条件
    dbo.collection("data").deleteOne(whereStr, function(err, obj) {
        if (err) throw err;
        console.log("文档删除成功");
        db.close();
    });
});

删除多条数据

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";
 
MongoClient.connect(url, function(err, db) {
    if (err) throw err;
    var dbo = db.db("WuJiaYi");
    var whereStr = { type: "en" };  // 查询条件
    dbo.collection("data").deleteMany(whereStr, function(err, obj) {
        if (err) throw err;
        console.log(obj.result.n + " 条文档被删除");
        db.close();
    });
});

广告时间:

微信公众号:吴佳轶同学。

未完待续... ...

推荐阅读更多精彩内容