FindOne MongoDB

Hàm

{field1: value, field1: value, .. }

8 trong Mongoose có nhiều trường hợp sử dụng khác nhau. Bạn nên sử dụng

{field1: value, field1: value, .. }

9 để cập nhật tài liệu nếu có thể, nhưng có một số trường hợp bạn cần sử dụng

{field1: value, field1: value, .. }

8. Trong hướng dẫn này, bạn sẽ thấy cách sử dụng

{field1: value, field1: value, .. }

8 và tìm hiểu khi nào bạn cần sử dụng nó

Như tên ngụ ý,

{field1: value, field1: value, .. }

8 tìm tài liệu đầu tiên khớp với một

{field1: value, field1: value, .. }

3 nhất định, áp dụng một

{field1: value, field1: value, .. }

4 và trả lại tài liệu. Theo mặc định,

{field1: value, field1: value, .. }

8 trả về tài liệu như trước khi áp dụng

{field1: value, field1: value, .. }

4

Bạn nên đặt tùy chọn

{field1: value, field1: value, .. }

80 thành

{field1: value, field1: value, .. }

81 để trả lại tài liệu sau khi áp dụng

{field1: value, field1: value, .. }

4

Mongoose's

{field1: value, field1: value, .. }

8 hơi khác so với MongoDB Node. js của

{field1: value, field1: value, .. }

8 vì nó trả về chính tài liệu, không phải đối tượng kết quả

Để thay thế cho tùy chọn

{field1: value, field1: value, .. }

80, bạn cũng có thể sử dụng tùy chọn

{field1: value, field1: value, .. }

86.

{field1: value, field1: value, .. }

87 tương đương với

{field1: value, field1: value, .. }

88. Tùy chọn

{field1: value, field1: value, .. }

86 tồn tại để thống nhất với Nút MongoDB. js của trình điều khiển

{field1: value, field1: value, .. }

8, có tùy chọn tương tự

Ngoại trừ một upert chưa được lập chỉ mục,

{field1: value, field1: value, .. }

8 là nguyên tử. Điều đó có nghĩa là bạn có thể giả định rằng tài liệu không thay đổi giữa thời điểm MongoDB tìm thấy tài liệu và khi nó cập nhật tài liệu, trừ khi bạn đang thực hiện upsert

Ví dụ: nếu bạn đang sử dụng

{field1: value, field1: value, .. }

9 để cập nhật tài liệu, thì tài liệu đó có thể thay đổi trong MongoDB giữa khi bạn tải tài liệu bằng cách sử dụng

{field1: value, field1: value, .. }

93 và khi bạn lưu tài liệu bằng cách sử dụng

{field1: value, field1: value, .. }

9 như hiển thị bên dưới. Đối với nhiều trường hợp sử dụng, điều kiện chủng tộc

{field1: value, field1: value, .. }

9 không phải là vấn đề. Nhưng bạn có thể giải quyết vấn đề này với

{field1: value, field1: value, .. }

8 (hoặc các giao dịch) nếu bạn cần

Sử dụng tùy chọn

{field1: value, field1: value, .. }

97, bạn có thể sử dụng

{field1: value, field1: value, .. }

8 làm thao tác tìm và nâng cấp. Upsert hoạt động giống như một

{field1: value, field1: value, .. }

8 bình thường nếu nó tìm thấy một tài liệu phù hợp với

{field1: value, field1: value, .. }

3. Tuy nhiên, nếu không có tài liệu nào khớp với

{field1: value, field1: value, .. }

3, MongoDB sẽ chèn một tài liệu bằng cách kết hợp

{field1: value, field1: value, .. }

3 và

{field1: value, field1: value, .. }

4 như hình bên dưới

Tùy chọn `rawResult`

Mongoose biến đổi kết quả của

{field1: value, field1: value, .. }

8 theo mặc định. nó trả về tài liệu cập nhật. Điều đó gây khó khăn cho việc kiểm tra xem một tài liệu đã được cập nhật hay chưa. Để lấy tài liệu được cập nhật và kiểm tra xem MongoDB đã cập nhật tài liệu mới trong cùng một thao tác hay chưa, bạn có thể đặt cờ

{field1: value, field1: value, .. }

85 để khiến Mongoose trả về kết quả thô từ MongoDB

Tóm lược. trong hướng dẫn này, bạn sẽ học cách sử dụng phương pháp MongoDB

{field1: value, field1: value, .. }

2 để truy xuất một tài liệu từ một bộ sưu tập

Giới thiệu về phương thức findOne() của MongoDB

{field1: value, field1: value, .. }

2 trả về một tài liệu duy nhất từ ​​một bộ sưu tập thỏa mãn điều kiện đã chỉ định

Phương thức

{field1: value, field1: value, .. }

2 có cú pháp như sau

db.collection.findOne(query, projection)

Code language: CSS (css)

{field1: value, field1: value, .. }

2 chấp nhận hai đối số tùy chọn.

{field1: value, field1: value, .. }

6 và

{field1: value, field1: value, .. }

7

  • {field1: value, field1: value, .. }

    6 là một tài liệu xác định các tiêu chí lựa chọn
  • {field1: value, field1: value, .. }

    7 là tài liệu chỉ định các trường trong tài liệu phù hợp mà bạn muốn trả về

Nếu bạn bỏ qua

{field1: value, field1: value, .. }

6, thì

{field1: value, field1: value, .. }

2 sẽ trả về tài liệu đầu tiên trong bộ sưu tập theo thứ tự tự nhiên là thứ tự của tài liệu trên đĩa

Nếu bạn không vượt qua đối số

{field1: value, field1: value, .. }

7, thì

{field1: value, field1: value, .. }

2 sẽ bao gồm tất cả các trường trong tài liệu phù hợp

Để chỉ định xem một trường có được đưa vào tài liệu được trả về hay không, bạn sử dụng định dạng sau

{field1: value, field1: value, .. }

Nếu

{field1: value, field1: value, .. }

44 là

{field1: value, field1: value, .. }

45 hoặc

{field1: value, field1: value, .. }

46, MongoDB sẽ bao gồm trường này trong tài liệu được trả về. Trong trường hợp

{field1: value, field1: value, .. }

44 là

{field1: value, field1: value, .. }

48 hoặc

{field1: value, field1: value, .. }

49, MongoDB sẽ không bao gồm nó

Theo mặc định, MongoDB luôn bao gồm trường

{field1: value, field1: value, .. }

00 trong tài liệu được trả về. Để chặn nó, bạn cần chỉ định rõ ràng

{field1: value, field1: value, .. }

01 trong đối số

{field1: value, field1: value, .. }

7

Nếu nhiều tài liệu thỏa mãn điều kiện

{field1: value, field1: value, .. }

6, phương thức

{field1: value, field1: value, .. }

2 trả về tài liệu đầu tiên dựa trên thứ tự của tài liệu được lưu trữ trên bộ lưu trữ dữ liệu

Lưu ý rằng có các dạng phép chiếu khác như phép chiếu mảng và phép chiếu tổng hợp không được đề cập trong hướng dẫn này

Ví dụ về phương thức findOne() của MongoDB

Chúng tôi sẽ sử dụng bộ sưu tập

{field1: value, field1: value, .. }

05 sau đây để trình diễn

{field1: value, field1: value, .. }

4

1) Sử dụng phương thức findOne() của MongoDB với đối số bằng 0

Ví dụ sau sử dụng phương pháp

{field1: value, field1: value, .. }

2 để chọn tài liệu đầu tiên từ bộ sưu tập

{field1: value, field1: value, .. }

05

{field1: value, field1: value, .. }

0

Câu lệnh trả về tất cả các trường của tài liệu phù hợp

db.collection.findOne(query, projection)

Code language: CSS (css)
0

Lưu ý rằng bỏ qua

{field1: value, field1: value, .. }

6 cũng giống như chuyển

{field1: value, field1: value, .. }

6 dưới dạng một tài liệu trống

db.collection.findOne(query, projection)

Code language: CSS (css)
3

2) Sử dụng phương thức findOne() của MongoDB với bộ lọc

Câu lệnh sau sử dụng phương pháp

{field1: value, field1: value, .. }

2 để tìm tài liệu có

{field1: value, field1: value, .. }

00 là 2

db.collection.findOne(query, projection)

Code language: CSS (css)
6

Nó trả về tất cả các trường của tài liệu với

{field1: value, field1: value, .. }

00 2

db.collection.findOne(query, projection)

Code language: CSS (css)
8

3) Sử dụng phương thức findOne() của MongoDB để chọn một số trường

Ví dụ sau sử dụng phương pháp

{field1: value, field1: value, .. }

2 để tìm tài liệu với

db.collection.findOne(query, projection)

Code language: CSS (css)
04. Và nó chỉ trả về các trường

{field1: value, field1: value, .. }

00 và

db.collection.findOne(query, projection)

Code language: CSS (css)
06 của tài liệu phù hợp

{field1: value, field1: value, .. }

3

Truy vấn trả về tài liệu sau

{field1: value, field1: value, .. }

4

Như bạn có thể thấy rõ từ đầu ra, MongoDB bao gồm trường

{field1: value, field1: value, .. }

00 trong tài liệu được trả về theo mặc định

Để xóa hoàn toàn nó khỏi tài liệu được trả lại, bạn cần chỉ định rõ ràng

db.collection.findOne(query, projection)

Code language: CSS (css)
08 trong tài liệu

{field1: value, field1: value, .. }

7 như thế này

FindOne trong MongoDB là gì?

Phương thức findOne() tìm và trả về một tài liệu phù hợp với tiêu chí lựa chọn đã cho . Nếu nhiều tài liệu thỏa mãn biểu thức truy vấn đã cho, thì phương thức này sẽ trả về tài liệu đầu tiên theo thứ tự tự nhiên phản ánh thứ tự của tài liệu trên đĩa.

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});

Sự khác biệt giữa find và findOne là gì?

FindOne() trả về tài liệu đầu tiên nếu truy vấn khớp ngược lại trả về null. Phương thức find() không trả về null, nó trả về một con trỏ . Không có tài liệu nào trong bộ sưu tập trên.

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.