Node.js MongoDB Tìm
Trong MongoDB, chúng tôi sử dụng phương thức find và findOne để 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