Node js MongoDB簡單操做

//win7環境下node要先安裝MongoDB的相關組件(非安裝MongoDB數據庫),在cmd命令行進入node項目目錄後執行如下語句
//npm install mongodb

//建立鏈接
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/testdb";

//連接 testdb 庫,不存在則建立
MongoClient.connect(url, function(error, db) {
    if (error) throw error;
    console.log("testdb 數據庫已建立!");
    
    var database = db.db("testdb");
    
    
    //建立集合(表),已有不會報錯
    database.createCollection('testtable', function (error, resulat) {
        if (error) throw error;
        console.log("testtable 集合已建立!");
    });



    //向testtable表插入文檔(條數據)
    var testdata = { testfield1: "node mongodb", testfield2: "test val" };
    database.collection("testtable").insertOne(testdata, function(error, result) {
        if (error) throw error;
        console.log("文檔插入成功");
    });
    
    
    
    //向testtable表插入多條數據
    var testdatas =  [
        { testfield1: 'testval1', testfield2: 'testval2', testfield3: '1'},
        { testfield1: 'testval11', testfield2: 'testval22', testfield3: '2'},
        { testfield1: 'testval111', testfield2: 'testval222', testfield3: '3'}
    ];
    database.collection("testtable").insertMany(testdatas, function(error, result) {
        if (error) throw error;
        console.log("插入的文檔數量爲: " + result.insertedCount);
    });
    
    //建立並向testtable2表插入多條數據
    database.collection("testtable2").insertMany(testdatas, function(error, result) {
        if (error) throw error;
        console.log("插入的文檔數量爲: " + result.insertedCount);
    });
    
    
    
    
    
    //更新一條數據
    var whereStr = {"testfield1":'testval1'}; // 查詢條件
    var updateStr = {$set: { "testfield2" : "update_testval2" }};
    database.collection("testtable").updateOne(whereStr, updateStr, function(error, result) {
        if (error) throw error;
        console.log("文檔更新成功");
    });
    //更新多條數據
    database.collection("testtable").updateMany(whereStr, updateStr, function(error, result) {
        if (error) throw error;
        //若是知足條件的文檔對應值已是要修改的值,此處更新條數爲0
        console.log(result.result.nModified + " 條文檔被更新");
    });
    
    
    
    //刪除一條數據
    var whereStr = {"testfield1":'testval11'}; // 查詢條件
    database.collection("testtable").deleteOne(whereStr, function(error, object) {
        if (error) throw error;
        console.log("文檔刪除成功");
    });
    //刪除多條數據
    var whereStr = {"testfield1":'testval111'}; // 查詢條件
    database.collection("testtable").deleteMany(whereStr, function(error, object) {
        if (error) throw error;
        console.log(object.result.n + " 條文檔被刪除");
    });
     
    
    
    //查詢testtable表所有數據
    database.collection("testtable"). find().toArray(function(error, result) { // 返回集合中全部數據
        if (error) throw error;
        console.log(result);
    });
    
    
    //也可按條件查詢查詢testtable表 testfield1 字段等於 testval1 的信息
    var whereStr = {"testfield1":'testval1'}; // 查詢條件
    database.collection("testtable"). find(whereStr).toArray(function(error, result) {
        if (error) throw error;
        console.log(result);
    });
    
    
    
    //查詢結果排序
    //先按 testfield2 字段升序排列,再按 testfield3 字段降序排列
    var sortStr = { testfield2:1, testfield3: -1 };
    database.collection("testtable").find().sort(sortStr).toArray(function(error, result) {
        if (error) throw error;
        console.log(result);
    });
    
    
    
    //分頁查詢
    //skip(int)  接受一個數字參數,爲返回結果中,跳過指定的條數再顯示
    //limit(int) 接受一個數字參數,爲返回結果中,限制顯示的條數
    //例子將排序後的結果跳過第 1 條後,顯示 2 條內容
    var sortStr = { testfield2:1, testfield3: -1 };
    database.collection("testtable").find().skip(1).limit(2).toArray(function(error, result) {
        if (error) throw error;
        console.log(result);
    });
    
    
    
    
    
    
    //多表鏈接操做
    //mongoDB 不是一個關係型數據庫,但能夠使用 $lookup 來實現左鏈接
    //首先是查詢的主表(左表)
    database.collection('testtable').aggregate([
        { $lookup:
            {
                from: 'testtable2',         // 關聯的右表
                localField: 'testfield1',   // 左表要關聯的 join 字段
                foreignField: 'testfield1', // 右表要關聯的 join字段
                as: 'newfield'              // 新生成字段(類型array)
            }
        }
    ], function(error, result) {
        if (error) throw error;
        //console.log(JSON.stringify(result));
        console.log(result);
    });
    
    

    
    
    //刪除表集合
    database.collection("testtable2").drop(function(error, delOK) { // 執行成功 delOK 返回 true,不然返回 false
        if (error) throw error;
        if (delOK) console.log("集合已刪除");
    });
    
    
    
    
    
    db.close();
});
相關文章
相關標籤/搜索