1. 程式人生 > >mongodb的學習-4-使用 MongoDB shell 來連線 Mongodb 服務

mongodb的學習-4-使用 MongoDB shell 來連線 Mongodb 服務

執行啟動操作後,mongodb 在輸出一些必要資訊後不會輸出任何資訊,之後就等待連線的建立,當連線被建立後,就會開始列印日誌資訊。

使用 MongoDB shell 來連線 Mongodb 服務

標準 URI 連線語法:

mongodb://[username:[email protected]]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]
  • mongodb:// 這是固定的格式,必須要指定。

  • username:[email protected] 可選項,如果設定,在連線資料庫伺服器之後,驅動都會嘗試登陸這個資料庫

  • host1 必須的指定至少一個host, host1 是這個URI唯一要填寫的。它指定了要連線伺服器的地址。如果要連線複製集,請指定多個主機地址。

  • portX 可選的指定埠,如果不填,預設為27017

  • /database 如果指定username:[email protected],連線並驗證登陸指定資料庫。若不指定,預設開啟 test 資料庫。

  • ?options 是連線選項。如果不使用/database,則前面需要加上/。所有連線選項都是鍵值對name=value,鍵值對之間通過&或;(分號)隔開

標準的連線格式包含了多個選項(options),如下所示:

選項 描述
replicaSet=name 驗證replica set的名稱。 Impliesconnect=replicaSet.
slaveOk=true|false
  • true:在connect=direct模式下,驅動會連線第一臺機器,即使這臺伺服器不是主。在connect=replicaSet模式下,驅動會發送所有的寫請求到主並且把讀取操作分佈在其他從伺服器。
  • false: 在 connect=direct模式下,驅動會自動找尋主伺服器. 在connect=replicaSet 模式下,驅動僅僅連線主伺服器,並且所有的讀寫命令都連線到主伺服器。
safe=true|false
    • true: 在執行更新操作之後,驅動都會發送getLastError命令來確保更新成功。(還要參考 wtimeoutMS).
false: 在每次更新之後,驅動不會發送getLastError來確保更新成功。
w=n 驅動新增 { w : n } 到getLastError命令. 應用於safe=true。
wtimeoutMS=ms 驅動新增 { wtimeout : ms } 到 getlasterror 命令. 應用於 safe=true.
fsync=true|false
  • true: 驅動新增 { fsync : true } 到 getlasterror 命令.應用於 safe=true.
  • false: 驅動不會新增到getLastError命令中。
journal=true|false 如果設定為 true, 同步到 journal (在提交到資料庫前寫入到實體中). 應用於 safe=true
connectTimeoutMS=ms 可以開啟連線的時間。
socketTimeoutMS=ms 傳送和接受sockets的時間。

 

就比如,我們執行mongo時:

wanghuideMBP:~ wanghui$ mongo
MongoDB shell version v3.6.4
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.6.4

可見connecting to: mongodb://127.0.0.1:27017

mongodb://127.0.0.1:27017 就等價於 mongo

詳細的看http://www.runoob.com/mongodb/mongodb-connections.html

 

在本部落格的Node.js 連線 MongoDB-7可見nodejs連線資料庫的url格式就是這個:

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://127.0.0.1:27017/";
MongoClient.connect(url, { useNewUrlParser: true }, function(err, db) {
    if (err) throw err;
    var dbo = db.db("mydatabase");
    dbo.collection("products").drop(function(err, delOK) { // 執行成功 delOK 返回 true,否則返回 false
        if (err) throw err;
        if (delOK) console.log("集合已刪除");
        db.close();
    });
});