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();
    });
});

廣告時間:

微信公眾號:吳佳軼同學。

未完待續... ...

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容