1. 程式人生 > >MongoDB安裝配置、CRUD基本教程

MongoDB安裝配置、CRUD基本教程

MongoDB用法簡介

官方文件地址: 官方文件

下載安裝

  • 首先下載安裝MongoDB。
  • 然後配置環境變數:將安裝目錄 Server下的bin目錄新增到環境變數,如:E:\MongoDB\Server\3.4\bin
  • 開啟cmd,輸入 mongod 檢測是否安裝配置完成。

啟動

  • 在C盤根目錄下建立目錄 /data/db 然後在cmd 輸入 mongod 此時MongoDB就處於啟動狀態,目錄就是剛剛在C盤建立的目錄。
  • 如果想在啟動時,自己選擇資料存放目錄,不用預設目錄:

    mongod –dbpath 資料庫路徑 –port 埠號 (埠非必須)

  • 此時不要關閉此視窗,此視窗在後臺執行,一旦關閉,MongoDB資料庫就關閉。

  • 開啟新視窗,輸入mongo,相當於啟動客戶端,就連線上了資料庫。
    這裡注意 啟動伺服器是 mongod 啟動客戶端是 mongo

將MongoDB設定為系統服務

  • 建立兩個目錄分別為 db、log
  • 在MongoDB安裝目錄下,找到 bin 的同級目錄,建立一個檔案為 mongod.cfg內容為:

    systemLog:
        destination: file
        path: E:\MongoDB\data\log\mongod.log
    storage:
        dbPath: E:\MongoDB\data\db
    

    其中路徑改為自己的真實路徑。

  • 以管理員身份執行 cmd(在所有程式裡面找到cmd.exe 右鍵管理員執行)

  • 執行:

    sc.exe create MongoDB binPath= "\"E:\MongoDB\Server\3.4\bin\mongod.exe\" --service --config=\"E:\MongoDB\Server\3.4\mongod.cfg\"" DisplayName= "MongoDB" start= "auto"
    

    其中路徑改為自己真實路徑。

這裡注意:第一次新增到系統服務很可能出錯,有可能安裝成功但是啟動不了,提示:

Windows不能在本地計算機啟動MongoDB,服務錯誤程式碼 100。

需要保證data目錄為空,然後刪除服務,重新執行一次:

sc delete MongoDB
sc.exe create MongoDB binPath= “\”E:\MongoDB\Server\3.4\bin\mongod.exe\” –service –config=\”E:\MongoDB\Server\3.4\mongod.cfg\”” DisplayName= “MongoDB” start= “auto”

即可,進入服務列表開啟服務,設定自動啟動。

接下來安裝圖形化工具

基本指令

    show dbs
    show databases
        - 顯示當前的所有資料庫
    use 資料庫名
        - 進入到指定的資料庫中
    db
        - db表示的是當前所處的資料庫
    show collections
        - 顯示資料庫中所有的集合

增刪改查

增加

/*
    向資料庫插入文件
        db.<collection>.insert()
        - 向集合中插入一個或多個文件
        - 當我們向集合中插入文件時,如果沒有給文件指定_id屬性,則資料庫會自動為文件新增_id
            該屬性用來作為文件的唯一標識
        - _id我們可以自己指定,如果我們指定了資料庫就不會在添加了,如果自己指定_id 也必須確保它的唯一性

    db.collection.insertOne()
        - 插入一個文件物件
    db.collection.insertMany() 
        - 插入多個文件物件
*/

    db.stus.insert({name:"張三",age:10,gender:"男"});

//一次插入多條記錄
    db.stus.insert([
        {name:"李四",age:15,gender:"男"},
        {name:"王二",age:16,gender:"女"},
        {name:"趙武",age:14,gender:"女"}
    ]);

//自己設定一個id
    db.stus.insert({_id:"hello",name:"豬八戒",age:28,gender:"男"});
    db.stus.find();

//生成一個物件id 直接呼叫
    ObjectId()

查詢

/*
查詢
    db.collection.find()
    - find()用來查詢集合中所有符合條件的文件
    - find()可以接收一個物件作為條件引數
        {} 表示查詢集合中所有的文件
        {屬性:值} 查詢屬性是指定值的文件

    - find()返回的是一個數組
    - find()[0]  取到查詢的第一個文件

    db.collection.findOne()
    - 用來查詢集合中符合條件的第一個文件  
    - findOne()返回的是一個文件物件 

   db.collection.find({}).count() 
    - 查詢所有結果的數量
*/
db.stus.find({_id:"hello"});
db.stus.find({age:16 , name:"張三"});
db.stus.find({age:28});
db.stus.findOne({age:28});

db.stus.find({}).count();

修改

    /*
    修改
     db.collection.update(查詢條件,新物件)
        - update()預設情況下會使用新物件來替換舊的物件
        - 如果需要修改指定的屬性,而不是替換需要使用“修改操作符”來完成修改
            $set 可以用來修改文件中的指定屬性
            $unset 可以用來刪除文件的指定屬性
        - update()預設只會修改一個

        db.collection.updateMany()
        - 同時修改多個符合條件的文件

        db.collection.updateOne()
        - 修改一個符合條件的文件    

        db.collection.replaceOne()
        - 替換一個文件
*/
db.stus.find({});

//替換  替換之後張三的所有屬性只剩下 age  其他都沒有
//相當於一個新的物件替換了原來的物件
db.stus.update({name:"張三"},{age:28});

//使用 set,只修改其中設定的屬性,不是替換
db.stus.update(
    {"_id" : ObjectId("59c219689410bc1dbecc0709")},
    {$set:{
        gender:"男",
        address:"北京"
    }}    
)

//unset是刪除設定的屬性,所以屬性值隨便寫,反正要刪除
db.stus.update(
    {"_id" : ObjectId("59c219689410bc1dbecc0709")},
    {$unset:{
        address:1
    }}    
)

db.stus.updateMany(
    {"name" : "李四"},
    {
        $set:{
            address:"上海"
        }
    }    
);

db.stus.update(
    {"name" : "李四"},

    {
        $set:{
        address:"深圳"
        }
    }  ,
    //有了這個屬性  會修改所有符合條件的記錄
    {
        multi:true
    }    
)

db.stus.find()

刪除

    /*
    db.collection.remove()
        - 刪除一個或多個,可以第二個引數傳遞一個true,則只會刪除一個
        - 如果傳遞一個空物件作為引數,則會刪除所有的
    db.collection.deleteOne()
    db.collection.deleteMany()
    db.collection.drop() 刪除集合
    db.dropDatabase() 刪除資料庫

        - 一般資料庫中的資料都不會刪除,所以刪除的方法很少呼叫
            一般會在資料中新增一個欄位,來表示資料是否被刪除
*/

db.stus.insert([

    {
        name:"zbj",
        isDel:0
        },
        {
        name:"shs",
        isDel:0
        },
    {
    name:"ts",
        isDel:0
    }

]);

db.stus.updateOne({name:"ts"},{$set:{isDel:1}});

db.stus.find({isDel:0})