選單
×
   ❮     
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

Node.js MongoDB 查詢


在 MongoDB 中,我們使用 findfindOne 方法來查詢集合中的資料。

這就像在 MySQL 資料庫的表中查詢資料時使用 SELECT 語句一樣。

查詢單個文件 (Find One)

要從 MongoDB 中的集合中選擇資料,我們可以使用 findOne() 方法。

findOne() 方法返回選擇中的第一個匹配項。

findOne() 方法的第一個引數是一個查詢物件。在此示例中,我們使用一個空的查詢物件,它會選擇集合中的所有文件(但只返回第一個文件)。

示例

查詢 customers 集合中的第一個文件

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://:27017/";

MongoClient.connect(url, function(err, db) {
  if (err) throw err;
  var dbo = db.db("mydb");
  dbo.collection("customers").findOne({}, function(err, result) {
    if (err) throw err;
    console.log(result.name);
    db.close();
  });
});
執行示例 »

將上面的程式碼儲存在一個名為 "demo_mongodb_findone.js" 的檔案中並執行該檔案。

執行 "demo_mongodb_findone.js"

C:\Users\您的名字>node demo_mongodb_findone.js

這將產生以下結果:

Company Inc.


查詢所有文件 (Find All)

要從 MongoDB 中的表選擇資料,我們也可以使用 find() 方法。

find() 方法返回選擇中的所有匹配項。

find() 方法的第一個引數是一個查詢物件。在此示例中,我們使用一個空的查詢物件,它會選擇集合中的所有文件。

在 find() 方法中不帶引數與 MySQL 中的 SELECT * 效果相同。

示例

查詢 customers 集合中的所有文件

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://:27017/";

MongoClient.connect(url, function(err, db) {
  if (err) throw err;
  var dbo = db.db("mydb");
  dbo.collection("customers").find({}).toArray(function(err, result) {
    if (err) throw err;
    console.log(result);
    db.close();
  });
});
執行示例 »

將上面的程式碼儲存在一個名為 "demo_mongodb_find.js" 的檔案中並執行該檔案。

執行 "demo_mongodb_find.js"

C:\Users\您的名字>node demo_mongodb_find.js

這將產生以下結果:

[
  { _id: 58fdbf5c0ef8a50b4cdd9a84 , name: 'John', address: 'Highway 71'},
  { _id: 58fdbf5c0ef8a50b4cdd9a85 , name: 'Peter', address: 'Lowstreet 4'},
  { _id: 58fdbf5c0ef8a50b4cdd9a86 , name: 'Amy', address: 'Apple st 652'},
  { _id: 58fdbf5c0ef8a50b4cdd9a87 , name: 'Hannah', address: 'Mountain 21'},
  { _id: 58fdbf5c0ef8a50b4cdd9a88 , name: 'Michael', address: 'Valley 345'},
  { _id: 58fdbf5c0ef8a50b4cdd9a89 , name: 'Sandy', address: 'Ocean blvd 2'},
  { _id: 58fdbf5c0ef8a50b4cdd9a8a , name: 'Betty', address: 'Green Grass 1'},
  { _id: 58fdbf5c0ef8a50b4cdd9a8b , name: 'Richard', address: 'Sky st 331'},
  { _id: 58fdbf5c0ef8a50b4cdd9a8c , name: 'Susan', address: 'One way 98'},
  { _id: 58fdbf5c0ef8a50b4cdd9a8d , name: 'Vicky', address: 'Yellow Garden 2'},
  { _id: 58fdbf5c0ef8a50b4cdd9a8e , name: 'Ben', address: 'Park Lane 38'},
  { _id: 58fdbf5c0ef8a50b4cdd9a8f , name: 'William', address: 'Central st 954'},
  { _id: 58fdbf5c0ef8a50b4cdd9a90 , name: 'Chuck', address: 'Main Road 989'},
  { _id: 58fdbf5c0ef8a50b4cdd9a91 , name: 'Viola', address: 'Sideway 1633'}
]

查詢部分欄位 (Find Some)

find() 方法的第二個引數是 projection 物件,它描述了結果中應包含哪些欄位。

此引數是可選的,如果省略,則結果中將包含所有欄位。

示例

返回 customers 集合中所有文件的 "name" 和 "address" 欄位

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://:27017/";

MongoClient.connect(url, function(err, db) {
  if (err) throw err;
  var dbo = db.db("mydb");
  dbo.collection("customers").find({}, { projection: { _id: 0, name: 1, address: 1 } }).toArray(function(err, result) {
    if (err) throw err;
    console.log(result);
    db.close();
  });
});
執行示例 »

將上面的程式碼儲存在一個名為 "demo_mongodb_find_fields.js" 的檔案中並執行該檔案。

執行 "demo_mongodb_find_fields.js"

C:\Users\您的名字>node demo_mongodb_find_fields.js

這將產生以下結果:

[
  { name: 'John', address: 'Highway 71'},
  { name: 'Peter', address: 'Lowstreet 4'},
  { name: 'Amy', address: 'Apple st 652'},
  { name: 'Hannah', address: 'Mountain 21'},
  { name: 'Michael', address: 'Valley 345'},
  { name: 'Sandy', address: 'Ocean blvd 2'},
  { name: 'Betty', address: 'Green Grass 1'},
  { name: 'Richard', address: 'Sky st 331'},
  { name: 'Susan', address: 'One way 98'},
  { name: 'Vicky', address: 'Yellow Garden 2'},
  { name: 'Ben', address: 'Park Lane 38'},
  { name: 'William', address: 'Central st 954'},
  { name: 'Chuck', address: 'Main Road 989'},
  { name: 'Viola', address: 'Sideway 1633'}
]

您不能在同一個物件中同時指定 0 和 1 值(除非其中一個欄位是 _id 欄位)。如果您指定一個值為 0 的欄位,所有其他欄位都將獲得值 1,反之亦然。

示例

此示例將排除 "address" 欄位的輸出

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://:27017/";

MongoClient.connect(url, function(err, db) {
  if (err) throw err;
  var dbo = db.db("mydb");
  dbo.collection("customers").find({}, { projection: { address: 0 } }).toArray(function(err, result) {
    if (err) throw err;
    console.log(result);
    db.close();
  });
});
執行示例 »

要排除 _id 欄位,您必須將其值設定為 0。

示例

此示例將只返回 "name" 欄位

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://:27017/";

MongoClient.connect(url, function(err, db) {
  if (err) throw err;
  var dbo = db.db("mydb");
  dbo.collection("customers").find({}, { projection: { _id: 0, name: 1 } }).toArray(function(err, result) {
    if (err) throw err;
    console.log(result);
    db.close();
  });
});
執行示例 »

示例

此示例將產生與第一個示例相同的結果:返回所有欄位,但排除 _id 欄位。

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://:27017/";

MongoClient.connect(url, function(err, db) {
  if (err) throw err;
  var dbo = db.db("mydb");
  dbo.collection("customers").find({}, { projection: { _id: 0 } }).toArray(function(err, result) {
    if (err) throw err;
    console.log(result);
    db.close();
  });
});
執行示例 »

示例

如果您在同一個物件中同時指定 0 和 1 值(_id 欄位除外),您會收到一個錯誤。

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://:27017/";

MongoClient.connect(url, function(err, db) {
  if (err) throw err;
  var dbo = db.db("mydb");
  dbo.collection("customers").find({}, { projection: { name: 1, address: 0 } }).toArray(function(err, result) {
    if (err) throw err;
    console.log(result);
    db.close();
  });
});
執行示例 »

結果物件

正如您從上面示例的結果中看到的,結果可以轉換為一個數組,其中每個文件都是一個物件。

要返回例如第三個文件的地址,只需引用第三個陣列物件的 address 屬性。

示例

返回第三個文件的地址

console.log(result[2].address);

這將產生以下結果:

Apple st 652

×

聯絡銷售

如果您想將 W3Schools 服務用於教育機構、團隊或企業,請傳送電子郵件給我們
sales@w3schools.com

報告錯誤

如果您想報告錯誤,或想提出建議,請傳送電子郵件給我們
help@w3schools.com

W3Schools 經過最佳化,旨在方便學習和培訓。示例可能經過簡化,以提高閱讀和學習體驗。教程、參考資料和示例會不斷審查,以避免錯誤,但我們無法保證所有內容的完全正確性。使用 W3Schools 即表示您已閱讀並接受我們的使用條款Cookie 和隱私政策

版權所有 1999-2024 Refsnes Data。保留所有權利。W3Schools 由 W3.CSS 提供支援