Find() và findone trong mongodb

Phương thức find được sử dụng để truy xuất dữ liệu từ bộ sưu tập MongoDB. Theo mặc định, phương thức find sẽ trả về tất cả các tài liệu trong một bộ sưu tập. Nếu truy vấn và phép chiếu được cung cấp, dữ liệu sẽ được lọc tương ứng và chỉ những tài liệu đó sẽ được truy xuất phù hợp với truy vấn. Nhưng có một phương pháp nữa có thể được sử dụng để lấy chỉ một tài liệu trong bộ sưu tập. Đây được gọi là phương pháp findOne. Trong bài viết này, chúng ta sẽ thảo luận về cách sử dụng phương thức findOne trong MongoDB

Phương thức findOne

Chúng tôi có một cơ sở dữ liệu (demoDB) và một bộ sưu tập (chi tiết) với một vài tài liệu. Hãy xem có bao nhiêu tài liệu trong bộ sưu tập chi tiết

> db. thông tin chi tiết. tìm()
{ "_id". ObjectId("5d6cf0902b61d6ce41d5a132"), "tên". "John", "tuổi". 21, "vị trí". "New York" }
{ "_id". ObjectId("5d6cf09b2b61d6ce41d5a133"), "tên". "Sâm", "tuổi". 22, "vị trí". "Texas" }
{ "_id". ObjectId("5d6cf0aa2b61d6ce41d5a134"), "tên". "Lisa", "tuổi". 24, "vị trí". "New York" }
>

Có ba tài liệu trong bộ sưu tập chi tiết. Chúng tôi đã sử dụng phương thức find mà không có bất kỳ truy vấn nào, vì vậy nó trả về tất cả các tài liệu có trong bộ sưu tập. Bạn nghĩ phương thức findOne sẽ trả về điều gì?

> db. thông tin chi tiết. findOne()
{
        "_id". ObjectId("5d6cf0902b61d6ce41d5a132"),
        "tên". "John",
        "tuổi". 21,
        "vị trí". "New York"
}
>

Chúng tôi đã sử dụng phương thức findOne mà không có bất kỳ tham số truy vấn nào. Nó trả về tài liệu đầu tiên của bộ sưu tập details. Đây là những gì phương thức findOne làm. Nó trả về tài liệu phù hợp đầu tiên và khi không có truy vấn nào được đưa ra, nó sẽ trả về tài liệu đầu tiên trong bộ sưu tập

Về cơ bản, phương thức findOne chỉ trả về một tài liệu duy nhất. Điều gì sẽ xảy ra nếu một truy vấn được đưa ra và có nhiều hơn một tài liệu trong bộ sưu tập khớp với truy vấn đó? . nó sẽ không. Nó sẽ chỉ trả về tài liệu đầu tiên phù hợp với truy vấn và tất cả những thứ khác sẽ bị bỏ qua

> db. thông tin chi tiết. findOne({"vị trí". "New York"})
{
        "_id". ObjectId("5d6cf0902b61d6ce41d5a132"),
        "tên". "John",
        "tuổi". 21,
        "vị trí". "New York"
}
>

Trong phương thức findOne, chúng tôi đã cung cấp một truy vấn – {“location”. "Newyork"}. Bây giờ trong bộ sưu tập chi tiết của chúng tôi, có hai tài liệu có trường vị trí là New York. Nhưng findOne chỉ trả về tài liệu khớp đầu tiên, tài liệu thứ hai bị bỏ qua

Chúng tôi có thể cung cấp phép chiếu cùng với truy vấn trong phương thức findOne

> db. thông tin chi tiết. findOne({"vị trí". "New York"}, {_id. 0, tên. 1})
{ "tên". "John" }
>

Sự khác biệt giữa phương thức find và phương thức findOne

  1. Không có truy vấn nào được đưa ra, phương thức find trả về tất cả các tài liệu có trong bộ sưu tập trong khi phương thức findOne chỉ trả về tài liệu đầu tiên
  2. Với truy vấn give, phương thức find trả về tất cả các tài liệu phù hợp trong khi phương thức findOne chỉ trả về tài liệu phù hợp đầu tiên
  3. Nếu truy vấn không khớp với bất kỳ tài liệu nào, phương thức findOne trả về null trong khi phương thức find không bao giờ trả về null. Quan sát ví dụ sau

> db. thông tin chi tiết. findOne({"vị trí". "Chicago"})
null
> db. thông tin chi tiết. tìm ({"vị trí". "Chicago"})
>

Trong cả hai phương pháp, một truy vấn được thông qua – {“location”. “Chicago”}. Nhưng không có tài liệu nào ghi vị trí bằng Chicago. Phương thức findOne trả về null trong khi phương thức find không. Phương thức find ở đây trả về một con trỏ trống

Sự kết luận

Chúng tôi đã chỉ cho bạn một vài ví dụ về cách sử dụng phương thức findOne. Bạn sử dụng nó khi bạn chỉ muốn tài liệu đầu tiên của bộ sưu tập khớp với truy vấn hoặc nếu bạn chỉ muốn tài liệu đầu tiên trong bộ sưu tập

Tham số đầu tiên của phương thức findOne5 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ả tài liệu trong 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. //máy chủ cục bộ. 27017/";

MongoClient. connect(url, function(err, db) {
  if (err) throw err;
  var dbo = db. db("mydb");
  dbo. bộ sưu tập ("khách hàng"). findOne({}, function(err, result) {
    if (err) throw err;
    bảng điều khiển. nhật ký (kết quả. name);
    db. close();
  });
});

Chạy ví dụ »

Lưu 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\Tên của bạn>nút demo_mongodb_findone. js

Cái nào sẽ cho bạn kết quả này



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 phương thức findOne6

Phương thức findOne6 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 phương thức findOne6 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 để 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. //máy chủ cục bộ. 27017/";

MongoClient. connect(url, function(err, db) {
  if (err) throw err;
  var dbo = db. db("mydb");
  dbo. bộ sưu tập ("khách hàng"). tìm thấy({}). toArray(function(err, result) {
    if (err) throw err;
    bảng điều khiển. log(kết quả);
    db. close();
  });
});

Chạy ví dụ »

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

Chạy "demo_mongodb_find. js"

C. \Users\Tên của bạn>nút demo_mongodb_find. js

Cái nào sẽ cho bạn kết quả này

[
  { _id. 58fdbf5c0ef8a50b4cdd9a84 , tên. 'John', địa chỉ. 'Quốc lộ 71'},
  { _id. 58fdbf5c0ef8a50b4cdd9a85 , tên. 'Peter', địa chỉ. 'Lowstreet 4'},
  { _id. 58fdbf5c0ef8a50b4cdd9a86 , tên. 'Amy', địa chỉ. 'Apple st 652'},
  { _id. 58fdbf5c0ef8a50b4cdd9a87 , tên. 'Hannah', địa chỉ. 'Núi 21'},
  { _id. 58fdbf5c0ef8a50b4cdd9a88 , tên. 'Michael', địa chỉ. 'Thung lũng 345'},
  { _id. 58fdbf5c0ef8a50b4cdd9a89 , tên. 'Sandy', địa chỉ. 'Ocean blvd 2'},
  { _id. 58fdbf5c0ef8a50b4cdd9a8a , tên. 'Betty', địa chỉ. 'Green Grass 1'},
  { _id. 58fdbf5c0ef8a50b4cdd9a8b , tên. 'Richard', địa chỉ. 'Sky st 331'},
  { _id. 58fdbf5c0ef8a50b4cdd9a8c , tên. 'Susan', địa chỉ. 'Một chiều 98'},
  { _id. 58fdbf5c0ef8a50b4cdd9a8d , tên. 'Vicky', địa chỉ. 'Khu vườn màu vàng 2'},
  { _id. 58fdbf5c0ef8a50b4cdd9a8e , tên. 'Ben', địa chỉ. 'Công viên ngõ 38'},
  { _id. 58fdbf5c0ef8a50b4cdd9a8f , tên. 'William', địa chỉ. 'Trung tâm đường 954'},
  { _id. 58fdbf5c0ef8a50b4cdd9a90 , tên. 'Chuck', địa chỉ. 'Main Road 989'},
  { _id. 58fdbf5c0ef8a50b4cdd9a91 , tên. 'Viola', địa chỉ. 'Đi ngang 1633'}
]


tìm một số

Tham số thứ hai của phương thức findOne6 là đối tượng findOne0 mô tả trường nào sẽ được đư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ả về 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. //máy chủ cục bộ. 27017/";

MongoClient. connect(url, function(err, db) {
  if (err) throw err;
  var dbo = db. db("mydb");
  dbo. bộ sưu tập ("khách hàng"). tìm ({}, { phép chiếu. { _Tôi. 0, tên. 1, địa chỉ. 1 } }). toArray(function(err, result) {
    if (err) throw err;
    bảng điều khiển. log(kết quả);
    db. close();
  });
});

Chạy ví dụ »

Lưu 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\Tên của bạn>nút demo_mongodb_find_fields. js

Cái nào sẽ cho bạn kết quả này

[
  { name. 'John', địa chỉ. 'Quốc lộ 71'},
  { name. 'Peter', địa chỉ. 'Lowstreet 4'},
  { name. 'Amy', địa chỉ. 'Apple st 652'},
  { name. 'Hannah', địa chỉ. 'Núi 21'},
  { name. 'Michael', địa chỉ. 'Thung lũng 345'},
  { name. 'Sandy', địa chỉ. 'Ocean blvd 2'},
  { name. 'Betty', địa chỉ. 'Green Grass 1'},
  { name. 'Richard', địa chỉ. 'Sky st 331'},
  { name. 'Susan', địa chỉ. 'Một chiều 98'},
  { name. 'Vicky', địa chỉ. 'Khu vườn vàng 2'},
  { name. 'Ben', địa chỉ. 'Công viên ngõ 38'},
  { name. 'William', địa chỉ. 'Trung tâm đường 954'},
  { name. 'Chuck', địa chỉ. 'Main Road 989'},
  { name. 'Viola', địa chỉ. 'Đi ngang 1633'}
]

Bạn không được phép chỉ định cả hai giá trị 0 và 1 trong cùng một đối tượng (trừ khi 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. //máy chủ cục bộ. 27017/";

MongoClient. connect(url, function(err, db) {
  if (err) throw err;
  var dbo = db. db("mydb");
  dbo. bộ sưu tập ("khách hàng"). tìm ({}, { phép chiếu. { địa chỉ. 0 } }). toArray(function(err, result) {
    if (err) throw err;
    bảng điều khiển. log(kết quả);
    db. close();
  });
});

Chạy ví dụ »

Để 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. //máy chủ cục bộ. 27017/";

MongoClient. connect(url, function(err, db) {
  if (err) throw err;
  var dbo = db. db("mydb");
  dbo. bộ sưu tập ("khách hàng"). tìm ({}, { phép chiếu. { _Tôi. 0, tên. 1 } }). toArray(function(err, result) {
    if (err) throw err;
    bảng điều khiển. log(kết quả);
    db. close();
  });
});

Chạy ví dụ »

Thí dụ

Ví dụ này sẽ cho bạn kết quả giống như ví dụ đầu tiên;

var MongoClient = require('mongodb'). MongoClient;
var url = "mongodb. //máy chủ cục bộ. 27017/";

MongoClient. connect(url, function(err, db) {
  if (err) throw err;
  var dbo = db. db("mydb");
  dbo. bộ sưu tập ("khách hàng"). tìm ({}, { phép chiếu. { _Tôi. 0 } }). toArray(function(err, result) {
    if (err) throw err;
    bảng điều khiển. log(kết quả);
    db. close();
  });
});

Chạy ví dụ »

Thí dụ

Bạn gặp lỗi nếu chỉ định cả hai 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. //máy chủ cục bộ. 27017/";

MongoClient. connect(url, function(err, db) {
  if (err) throw err;
  var dbo = db. db("mydb");
  dbo. bộ sưu tập ("khách hàng"). tìm ({}, { phép chiếu. { Tên. 1, địa chỉ. 0 } }). toArray(function(err, result) {
    if (err) throw err;
    bảng điều khiển. log(kết quả);
    db. close();
  });
});

Chạy ví dụ »


đố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ả lại e. g. địa chỉ của tài liệu thứ ba, chỉ cần tham khảo thuộc tính địa chỉ của đối tượng mảng thứ ba

Mục đích của phương thức Find() trong MongoDB là gì?

Phương thức find() trong MongoDB chọn tài liệu trong bộ sưu tập hoặc chế độ xem và trả về con trỏ cho tài liệu đã chọn . Nó có hai tham số. truy vấn và chiếu.

Làm cách nào để tìm một trường trong MongoDB?

Bạn có thể chọn một trường duy nhất trong MongoDB bằng cú pháp sau. db. yourCollectionName. tìm({"yourFieldName". yourValue},{"yourSingleFieldName". 1,_id. 0});

findOne trả về MongoDB là gì?

Trả về. Một tài liệu đáp ứng các tiêu chí được chỉ định làm đối số đầu tiên cho phương thức này . Nếu bạn chỉ định một tham số phép chiếu, findOne() trả về một tài liệu chỉ chứa các trường phép chiếu. Trường _id luôn được bao gồm trừ khi bạn loại trừ nó một cách rõ ràng.

Làm cách nào để sử dụng findOne trong MongoDB nodejs?

phương thức findOne(). Phương thức findOne() sử dụng tài liệu truy vấn mà bạn cung cấp để chỉ khớp với tập hợp con của các tài liệu trong bộ sưu tập khớp với truy vấn . Nếu bạn không cung cấp tài liệu truy vấn hoặc nếu bạn cung cấp tài liệu trống, MongoDB sẽ so khớp tất cả tài liệu trong bộ sưu tập.