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();
});
});
廣告時間:
微信公眾號:吳佳軼同學。
未完待續... ...