MongoDB
MongoDB的運(yùn)行
- 下載、安裝好MongoDB,并在MongoDB的根目錄下創(chuàng)建一個(gè)data目錄,然后在data目錄下創(chuàng)建db目錄 (MongoDB將數(shù)據(jù)目錄存儲(chǔ)在db目錄下,若無(wú)此操作泽西,將無(wú)法運(yùn)行MongoDB)
image - cd到MongoDB的安裝目錄下的bin目錄中,運(yùn)行
F:\MongoDB\bin\mongod --dbpath F:\data\db
// 具體路徑根據(jù)自己的安裝情況來(lái)
image
- 然后雙擊bin目錄下的mongo.exe運(yùn)行MongoDB缰趋,成功運(yùn)行之后訪問(wèn) http://localhost:27017/ 顯示以下提示即為運(yùn)行成功
image
Node
在項(xiàng)目中安裝MongoDB
npm install mongodb
插入數(shù)據(jù)
關(guān)鍵語(yǔ)句
insert(document)
參數(shù)說(shuō)明
- document:需要插入的數(shù)據(jù)捧杉,鍵值對(duì)的形式
代碼
// 引入mongodb模塊
var MongoClient = require('mongodb').MongoClient;
// 創(chuàng)建要連接的數(shù)據(jù)庫(kù)對(duì)象
var DB_CONN_STR = 'mongodb://localhost:27017/index';
var insertData = function (db, callback) {
var collection = db.collection('person'); // 連接將要操作的表(person為數(shù)據(jù)庫(kù)index中的一個(gè)表)
// 要插入的數(shù)據(jù)
var data = [{
"name": "Han",
"age": "21"
}, {
"name": "ZLHan",
"age": "23"
}];
// 執(zhí)行插入
collection.insert(data, function (err, result) {
if (err) {
console.log('Error:' + err);
return;
}
callback(result);
})
}
MongoClient.connect(DB_CONN_STR, function (err, db) {
console.log('連接成功!');
insertData(db, function (result) {
console.log(result);
db.close();
})
})
效果展示
以下是Robo 3T下的效果圖
image
查詢數(shù)據(jù)
關(guān)鍵語(yǔ)句
find(query, projection)
參數(shù)說(shuō)明
- query:
- projection: 返回結(jié)果秘血,值為0的不反回味抖,值為1的返回,默認(rèn)返回所有鍵如:
{name: 0, _id: 0} 表person有name灰粮、age和_id(默認(rèn)帶有)三個(gè)屬性仔涩,此處只返回age屬性
代碼
// 查詢數(shù)據(jù)
// 引入mongodb模塊
var MongoClient = require('mongodb').MongoClient;
// 創(chuàng)建要連接的數(shù)據(jù)庫(kù)對(duì)象
var DB_CONN_STR = 'mongodb://localhost:27017/index';
var selectData = function (db, callback) {
var collection = db.collection('person'); // 連接將要操作的表(person為數(shù)據(jù)庫(kù)index中的一個(gè)表)
// 查詢條件
var where = {'name': 'Han'}
// 查詢
collection.find(where, {name: 0, _id: 0}).toArray(function (err, result) {
if (err) {
console.log('Error:' + err);
return
}
callback(result);
});
}
MongoClient.connect(DB_CONN_STR, function (err, db) {
console.log('連接成功!');
selectData(db, function (result) {
console.log(result);
db.close();
})
})
效果展示
image
更新數(shù)據(jù)
關(guān)鍵語(yǔ)句
update(<query>, <update>, {
upsert: <boolean>,
multi: <boolean>,
writeConcern: <document>
})
參數(shù)說(shuō)明
- query: 更新數(shù)據(jù)的條件
- update: 更新的數(shù)據(jù)粘舟、對(duì)象
- upsert: (可選)若update對(duì)象不存在熔脂,是否允許插入,默認(rèn)false
- multi: (可選)是否允許更新由query查詢出的所有記錄柑肴,默認(rèn)false(只更新第一條記錄)
- writeConcern: (可選)拋出異常的級(jí)別
代碼
// 更新數(shù)據(jù)
// 引入mongodb模塊
var MongoClient = require('mongodb').MongoClient;
// 創(chuàng)建要連接的數(shù)據(jù)庫(kù)對(duì)象
var DB_CONN_STR = 'mongodb://localhost:27017/index';
var updateData = function (db, callback) {
var collection = db.collection('person'); // 連接將要操作的表(person為數(shù)據(jù)庫(kù)index中的一個(gè)表)
// 更新條件
var where = {'name': 'Han'};
// 更新數(shù)據(jù)
var updateData = {$set: {"age" : 222}};
collection.update(where, updateData, function (err, result) {
if (err) {
console.log('Error:' + err);
return
}
callback(result);
});
}
MongoClient.connect(DB_CONN_STR, function (err, db) {
console.log('連接成功霞揉!');
updateData(db, function (result) {
console.log(result);
db.close();
})
})
image
刪除數(shù)據(jù)
關(guān)鍵語(yǔ)句
remove(<query>, <justOne>)
若MongoDB的版本是2.6以后:
remove(<query>,
{
justOne: <boolean>,
writeConcern: <document>
}
)
參數(shù)說(shuō)明
- query :(可選)刪除的文檔的條件。
- justOne : (可選)如果設(shè)為 true 或 1晰骑,則只刪除一個(gè)文檔适秩。
- writeConcern :(可選)拋出異常的級(jí)別。
代碼
// 刪除數(shù)據(jù)
// 引入mongodb模塊
var MongoClient = require('mongodb').MongoClient;
// 創(chuàng)建要連接的數(shù)據(jù)庫(kù)對(duì)象
var DB_CONN_STR = 'mongodb://localhost:27017/index';
var deleteData = function (db, callback) {
var collection = db.collection('person'); // 連接將要操作的表(person為數(shù)據(jù)庫(kù)index中的一個(gè)表)
// 刪除條件
var where = {'name': '小明'};
// 刪除
collection.remove(where, function (err, result) {
if (err) {
console.log('Error:' + err);
return
}
callback(result);
});
}
MongoClient.connect(DB_CONN_STR, function (err, db) {
console.log('連接成功!');
deleteData(db, function (result) {
console.log(result);
db.close();
})
})
效果展示
原表
image
刪除后
image