Node.js MongoDB Tìm


Trong MongoDB, chúng tôi sử dụng phương thức findfindOne để tìm dữ liệu trong một tập hợp.

Giống như câu lệnh SELECT được sử dụng để tìm dữ liệu trong bảng trong cơ sở dữ liệu MySQL.

Tìm một

Để chọn dữ liệu từ một tập hợp trong MongoDB, chúng ta có thể sử dụng findOne()phương pháp này.

Phương findOne()thức trả về lần xuất hiện đầu tiên trong vùng chọn.

Tham số đầu tiên của findOne()phương thức là một đối tượng truy vấn. Trong ví dụ này, chúng tôi sử dụng một đối tượng truy vấn trống, đối tượng này chọn tất cả các tài liệu trong một bộ sưu tập (nhưng chỉ trả về tài liệu đầu tiên).

Thí dụ

Tìm tài liệu đầu tiên trong bộ sưu tập khách hàng:

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost: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();
  });
});

Lưu đoạn mã trên vào tệp có tên "demo_mongodb_findone.js" và chạy tệp:

Chạy "demo_mongodb_findone.js"

C:\Users\Your Name>node demo_mongodb_findone.js

Điều này sẽ cung cấp cho bạn kết quả này:

Company Inc.


Tìm tất cả

Để chọn dữ liệu từ một bảng trong MongoDB, chúng ta cũng có thể sử dụng find()phương pháp này.

Phương find()thức trả về tất cả các lần xuất hiện trong vùng chọn.

Tham số đầu tiên của find()phương thức là một đối tượng truy vấn. Trong ví dụ này, chúng tôi sử dụng một đối tượng truy vấn trống, đối tượng này sẽ chọn tất cả các tài liệu trong bộ sưu tập.

Không có tham số nào trong phương thức find () cho bạn kết quả giống như SELECT * trong MySQL.

Thí dụ

Tìm tất cả các tài liệu trong bộ sưu tập khách hàng:

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost: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();
  });
});

Lưu đoạn mã trên vào một tệp có tên "demo_mongodb_find.js" và chạy tệp:

Chạy "demo_mongodb_find.js"

C:\Users\Your Name>node demo_mongodb_find.js

Điều này sẽ cung cấp cho bạn kết quả này:

[
  { _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'}
]

Tìm một số

Tham số thứ hai của find()phương thức là projectionđối tượng mô tả những trường nào cần đưa vào kết quả.

Tham số này là tùy chọn và nếu bỏ qua, tất cả các trường sẽ được đưa vào kết quả.

Thí dụ

Trả lại các trường "tên" và "địa chỉ" của tất cả các tài liệu trong bộ sưu tập khách hàng:

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost: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();
  });
});

Lưu đoạn mã trên vào tệp có tên "demo_mongodb_find_fields.js" và chạy tệp:

Chạy "demo_mongodb_find_fields.js"

C:\Users\Your Name>node demo_mongodb_find_fields.js

Điều này sẽ cung cấp cho bạn kết quả này:

[
  { 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'}
]

Bạn không được phép chỉ định cả giá trị 0 và 1 trong cùng một đối tượng (ngoại trừ trường hợp một trong các trường là trường _id). Nếu bạn chỉ định một trường có giá trị 0, tất cả các trường khác sẽ nhận giá trị 1 và ngược lại:

Thí dụ

Ví dụ này sẽ loại trừ "địa chỉ" khỏi kết quả:

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost: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();
  });
});

Để loại trừ trường _id, bạn phải đặt giá trị của nó thành 0:

Thí dụ

Ví dụ này sẽ chỉ trả về trường "tên":

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost: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();
  });
});

Thí dụ

Ví dụ này sẽ cung cấp cho bạn kết quả tương tự như ví dụ đầu tiên; trả về tất cả các trường ngoại trừ trường _id:

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost: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();
  });
});

Thí dụ

Bạn gặp lỗi nếu chỉ định cả giá trị 0 và 1 trong cùng một đối tượng (ngoại trừ nếu một trong các trường là trường _id):

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost: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();
  });
});

Đối tượng kết quả

Như bạn có thể thấy từ kết quả của ví dụ trên, kết quả có thể được chuyển đổi thành một mảng chứa mỗi tài liệu dưới dạng một đối tượng.

Để trả về ví dụ: địa chỉ của tài liệu thứ ba, chỉ cần tham chiếu đến thuộc tính địa chỉ của đối tượng mảng thứ ba:

Thí dụ

Trả lại địa chỉ của tài liệu thứ ba:

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

Điều nào sẽ tạo ra kết quả này:

Apple st 652