Node.js - MongoDB 查找

您好,有抱負的程序员們!今天,我們將踏上一段令人興奮的旅程,進入 Node.js 和 MongoDB 的世界。具體來說,我們將探索如何使用 Node.js 從 MongoDB 數據庫中检索數據。如果你是新手,不必擔心——我們將從基礎知識開始,逐步深入。在本教程結束時,你將能夠像專家一樣查找文件!

Node.js - MongoDB Find

MongoDB 和 Node.js 的介紹

在我們深入查找文件的具體細節之前,讓我們花一會兒時間了解一下 MongoDB 和 Node.js 是什麼。

MongoDB 是一個流行的 NoSQL 數據庫,它以靈活的、類似 JSON 的文件形式存儲數據。它就像一個巨大的數字文件櫥,你可以在其中存儲各種各樣的信息。

另一方面,Node.js 是一個 JavaScript 執行環境,它讓你能在電腦上運行 JavaScript,而不是在網頁浏览器中。它就像是給 JavaScript 超能力,讓它能夠與你的電腦文件系統、網絡以及在我們的案例中,像 MongoDB 這樣的數據庫交互。

現在,讓我們來動手寫一些代碼吧!

配置我們的環境

首先,我們需要設置我們的項目。以下是你要做的是:

  1. 如果還沒有安裝 Node.js,請從官方網站下載並安裝。
  2. 為你的項目創建一個新目錄。
  3. 在該目錄中打開終端並運行 npm init -y 來創建一個 package.json 文件。
  4. 通過運行 npm install mongodb 安裝 MongoDB 驅動。

太好了!現在我们可以開始編程了。

連接到 MongoDB

在我們能夠查找任何文件之前,我們需要連接到我們的 MongoDB 數據庫。以下是如何操作的:

const { MongoClient } = require('mongodb');

const url = 'mongodb://localhost:27017';
const dbName = 'myProject';

async function connectToDatabase() {
const client = new MongoClient(url);

try {
await client.connect();
console.log('成功連接到數據庫');
const db = client.db(dbName);
return db;
} catch (error) {
console.error('連接數據庫失敗', error);
throw error;
}
}

讓我們分解一下:

  1. 我們從 mongodb 包中導入 MongoClient
  2. 我們指定 MongoDB 服務器運行的 URL 以及我們數據庫的名稱。
  3. 我們創建一個異步函數 connectToDatabase() 來建立到我們 MongoDB 服務器的連接。
  4. 如果連接成功,我們返回數據庫對象。如果失敗,我們記錄錯誤。

讀取所有文件

現在連接成功,讓我們學習如何從集合中检索所有文件。我們將使用 find() 方法來完成這個操作。

async function findAllDocuments(db, collectionName) {
const collection = db.collection(collectionName);

try {
const documents = await collection.find({}).toArray();
console.log('找到了以下文件:');
console.log(documents);
return documents;
} catch (error) {
console.error('查找文件時出錯:', error);
throw error;
}
}

這裡發生了什麼:

  1. 我們使用 db.collection(collectionName) 獲取我們集合的引用。
  2. 我們使用 find({}) 查询所有文件。空對象 {} 意味著我們不應用任何過濾。
  3. 我們使用 toArray() 將結果轉換為數組。
  4. 我們記錄並返回文件。

要使用這個函數,你可以這樣做:

async function main() {
const db = await connectToDatabase();
await findAllDocuments(db, 'users');
}

main().catch(console.error);

使用 findOne()

有時,你可能只需要检索一個文件。這時 findOne() 方法就派上用場了。讓我們為此創建一個函數:

async function findOneDocument(db, collectionName, query) {
const collection = db.collection(collectionName);

try {
const document = await collection.findOne(query);
if (document) {
console.log('找到了一個文件:');
console.log(document);
} else {
console.log('沒有文件符合查詢條件。');
}
return document;
} catch (error) {
console.error('查找文件時出錯:', error);
throw error;
}
}

這個函數是如何工作的:

  1. 我們使用 findOne(query) 查找與我們查詢匹配的單個文件。
  2. 如果找到了文件,我們記錄並返回它。如果沒有,我們記錄一條消息,說明沒有找到文件。

你可以這樣使用這個函數:

async function main() {
const db = await connectToDatabase();
await findOneDocument(db, 'users', { name: 'John Doe' });
}

main().catch(console.error);

這將找到名為 'John Doe' 的第一個用戶。

方法表

這裡是我們已經介紹過的方法的一個方便的表格:

方法 描述 示例
find() 检索多個文件 collection.find({})
findOne() 检索一個文件 collection.findOne({ name: 'John' })

結論

恭喜你!你剛剛學會了如何使用 Node.js 在 MongoDB 中查找文件。我們已經涵蓋了連接數據庫、检索所有文件和查找單個文件。這些是你將在幾乎每個 MongoDB 項目中都會使用的基礎技能。

記住,熟能生巧。試著創建一個小項目,你可以應用這些概念。也許是一個簡單的通訊錄或待辦事項列表?可能性無限!

祝編程愉快,願你的查詢總能返回你所尋找的文件!

Credits: Image by storyset