Phương thức find() của MongoDB chọn các tài liệu từ một bộ sưu tập hoặc chế độ xem và trả về một con trỏ tới các tài liệu đó. Có hai tham số trong công thức này. truy vấn và chiếu Show
Truy vấn – Đây là một tham số tùy chọn chỉ định tiêu chí để lựa chọn. Nói một cách đơn giản, truy vấn là thứ bạn muốn tìm kiếm trong một bộ sưu tập Phép chiếu – Đây là tham số tùy chọn chỉ định nội dung sẽ được trả về nếu tiêu chí truy vấn được thỏa mãn. Nói một cách đơn giản, đó là một kiểu ra quyết định dựa trên một bộ tiêu chí Lược đồ linh hoạt MongoDBCơ sở dữ liệu NoSQL, viết tắt của "không chỉ SQL", là một cách lưu trữ và truy xuất dữ liệu khác với cấu trúc bảng truyền thống của cơ sở dữ liệu quan hệ (RDBMS) Khi lưu trữ một lượng lớn dữ liệu phi cấu trúc với các lược đồ thay đổi, cơ sở dữ liệu NoQuery thực sự là một lựa chọn tốt hơn RDBMS. Thuộc tính mở rộng theo chiều ngang của cơ sở dữ liệu NoSQL cho phép chúng lưu trữ và xử lý lượng lớn dữ liệu Chúng được dùng để lưu trữ, truy xuất và quản lý dữ liệu định hướng tài liệu, thường được lưu trữ ở định dạng JSON (Ký hiệu đối tượng JavaScript). Cơ sở dữ liệu tài liệu, không giống như RDBMS, có một lược đồ linh hoạt được xác định bởi nội dung của tài liệu MongoDB là một trong những cơ sở dữ liệu tài liệu NoSQL mã nguồn mở được sử dụng rộng rãi nhất. MongoDB được gọi là cơ sở dữ liệu 'không lược đồ' vì nó không áp đặt cấu trúc cụ thể cho các tài liệu trong bộ sưu tập MongoDB tương thích với một số ngôn ngữ lập trình phổ biến. Nó cũng cung cấp mức độ linh hoạt hoạt động cao vì nó mở rộng tốt theo chiều ngang, cho phép dữ liệu được trải rộng hoặc 'phân mảnh' trên nhiều máy chủ hàng hóa với khả năng thêm nhiều máy chủ hơn khi cần. MongoDB có thể chạy trên nhiều nền tảng, bao gồm máy tính xách tay của nhà phát triển, đám mây riêng và đám mây công cộng Truy vấn tài liệu sử dụng find()Các truy vấn MongoDB được sử dụng để truy xuất hoặc tìm nạp dữ liệu từ cơ sở dữ liệu MongoDB. Khi chạy truy vấn, bạn có thể sử dụng tiêu chí hoặc điều kiện để truy xuất dữ liệu cụ thể từ cơ sở dữ liệu chức năng db. bộ sưu tập được cung cấp bởi MongoDB. find() là hàm truy xuất tài liệu từ cơ sở dữ liệu MongoDB Trong MongoDB, findmethods được sử dụng để truy xuất một tài liệu cụ thể từ bộ sưu tập MongoDB. Trong Mongo DB, có tổng cộng sáu phương thức để truy xuất các bản ghi cụ thể
cú pháp find(query, projection) Chúng tôi có thể tìm nạp một bản ghi cụ thể bằng phương thức Tìm có hai tham số. Nếu hai tham số này bị bỏ qua, phương thức find sẽ trả về tất cả các tài liệu trong bộ sưu tập MongoDB Ví dụ Xem xét một ví dụ về nhân viên với cơ sở dữ liệu của employee_id và employee_name và chúng tôi sẽ tìm nạp tài liệu bằng phương thức find() Đầu tiên, tạo một cơ sở dữ liệu với tên “nhân viên” với đoạn mã sau sử dụng nhân viên Bây giờ, hãy tạo một bộ sưu tập “nhân viên” với db.createCollection("employee") Trong bước tiếp theo, chúng tôi sẽ chèn các tài liệu vào cơ sở dữ liệu db.employee.insert([{employee_id: 101, employee_name: "Ishan"}, {employee_id: 102, employee_name: "Bhavesh"}, {employee_id: 103, employee_name: "Madan"}]) Tìm tất cả Tài liệu Để lấy tất cả các bản ghi trong một bộ sưu tập, chúng ta cần sử dụng phương thức find với tham số trống. Nói cách khác, khi chúng tôi cần tất cả các bản ghi, chúng tôi sẽ không sử dụng bất kỳ tham số nào db.employee.find() Đầu ra trong Mongo Shell Phương thức pretty() có thể được sử dụng để hiển thị kết quả theo cách được định dạng cú pháp db.COLLECTION_NAME.find().pretty() Hãy kiểm tra tài liệu của chúng ta với phương thức pretty() Bộ lọc truy vấnChúng ta sẽ xem các ví dụ về thao tác truy vấn sử dụng thedb. thu thập. phương thức find() inmongosh Chúng tôi sẽ sử dụng bộ sưu tập nhân viên trong cơ sở dữ liệu nhân viên db.employee.insert([{employee_id: 101, employee_name: "Ishan", age: 21, email_id: "[email protected]"}, {employee_id: 102, employee_name: "Bhavesh", age: 22, email_id: "[email protected]"}, {employee_id: 103, employee_name: "Madan", age: 23, email_id: "[email protected]"}]) Như chúng ta đã thấy trước đó, để chọn tất cả các tài liệu trong cơ sở dữ liệu, chúng ta chuyển một tài liệu trống làm tham số bộ lọc truy vấn cho phương thức tìm db.employee.find().pretty() Tìm tài liệu đầu tiên trong bộ sưu tập.db.employee.findOne() Tìm tài liệu theo ID.db.employee.findOne({_id : ObjectId("61d1ae0b56b92c20b423a5a7")}) Tìm tài liệu phù hợp với tiêu chí truy vấndb.employee.find({“age”: “22”}) db.createCollection("employee")0 Sắp xếp kết quả theo trường.db. người lao động. tìm thấy(). sắp xếp ({tuổi. 1}). khá()theo độ tuổi, tăng dần db. người lao động. tìm thấy(). sắp xếp ({tuổi. -1}). khá()thứ tự theo tuổi, giảm dần VÀ Điều kiệnTruy vấn ghép có thể chỉ định điều kiện cho nhiều trường trong tài liệu trong bộ sưu tập. Liên kết logic AND kết nối gián tiếp các mệnh đề của truy vấn ghép, cho phép truy vấn chọn tất cả các tài liệu trong bộ sưu tập đáp ứng các điều kiện đã chỉ định Trong ví dụ sau, chúng tôi sẽ xem xét tất cả các tài liệu trong bộ sưu tập nhân viên trong đó employee_id bằng 101 và tuổi bằng 21 db.createCollection("employee")1 Truy vấn các trường lồng nhauTính năng nhúng hoặc lồng tài liệu trong MongoDB là một tính năng hữu ích. Tài liệu nhúng, còn được gọi là tài liệu lồng nhau, là tài liệu chứa các tài liệu khác Bạn chỉ cần nhúng một tài liệu vào bên trong một tài liệu khác trong MongoDB. Các tài liệu được xác định trong trình bao mongo bằng cách sử dụng dấu ngoặc nhọn () và các cặp giá trị trường được chứa trong các dấu ngoặc nhọn này Sử dụng dấu ngoặc nhọn, giờ đây chúng ta có thể nhúng hoặc đặt một tài liệu khác bên trong các trường này, có thể bao gồm các cặp giá trị trường hoặc tài liệu phụ khác cú pháp db.createCollection("employee")2 Ví dụ Chúng tôi có một cơ sở dữ liệu “nested” và trong cơ sở dữ liệu này, chúng tôi có bộ sưu tập “nesteddoc” Các tài liệu sau sẽ chèn vào thenesteddoccollection db.createCollection("employee")3 Đặt các tài liệu trong bộ sưu tập bây giờ. Ngoài ra, hãy xem kết quả Kết quả là, bộ sưu tập Nesteddoc chứa bốn tài liệu, mỗi tài liệu chứa các tài liệu lồng nhau. Phương thức find() có thể được sử dụng để truy cập tài liệu của bộ sưu tập db.createCollection("employee")4 Chỉ định điều kiện đẳng thức.Trong ví dụ này, chúng tôi sẽ chọn tài liệu từ truy vấn Nesteddoc trong đó dept bằng “A” db.createCollection("employee")5 Truy vấn mảngSử dụng tài liệu truy vấn {. } để chỉ định một điều kiện đẳng thức trên một mảng, trong đó mảng chính xác phù hợp, bao gồm cả thứ tự của các phần tử Truy vấn sau tìm kiếm tất cả các tài liệu có giá trị thẻ trường là một mảng có chính xác hai phần tử, "S" và "M" theo thứ tự được chỉ định db.createCollection("employee")6 Sử dụng toán tử $all để tìm một mảng chứa cả hai phần tử "S" và "M", bất kể thứ tự hoặc các phần tử khác trong mảng. db.createCollection("employee")7 Truy vấn một mảng cho một phần tử.Ví dụ sau truy vấn cho tất cả các tài liệu trong đó kích thước là một mảng chứa chuỗi “S” là một trong các phần tử của nó db.createCollection("employee")8 Điều kiện lọcĐể thảo luận về các điều kiện lọc, chúng tôi sẽ xem xét một tình huống xây dựng điều này. Chúng tôi sẽ bắt đầu bằng cách tạo một bộ sưu tập với tên “products” và sau đó thêm các tài liệu vào đó db.createCollection("employee")9 Để kiểm tra tài liệu, hãy sử dụng db. Mỹ phẩm. tìm thấy() $gt$gt chọn tài liệu có giá trị trường lớn hơn (hoặc bằng) giá trị đã chỉ định db.employee.insert([{employee_id: 101, employee_name: "Ishan"}, {employee_id: 102, employee_name: "Bhavesh"}, {employee_id: 103, employee_name: "Madan"}])0 $gte.$gte tìm các tài liệu trong đó giá trị của một trường lớn hơn hoặc bằng (i. e. >=) một giá trị xác định (e. g. giá trị. ) db.employee.insert([{employee_id: 101, employee_name: "Ishan"}, {employee_id: 102, employee_name: "Bhavesh"}, {employee_id: 103, employee_name: "Madan"}])1 $lt.$lt chọn tài liệu có giá trị trường nhỏ hơn (hoặc bằng) giá trị đã chỉ định db.employee.insert([{employee_id: 101, employee_name: "Ishan"}, {employee_id: 102, employee_name: "Bhavesh"}, {employee_id: 103, employee_name: "Madan"}])2 $lte.$lte chọn tài liệu trong đó giá trị của trường nhỏ hơn hoặc bằng (i. e. =) giá trị được chỉ định db.employee.insert([{employee_id: 101, employee_name: "Ishan"}, {employee_id: 102, employee_name: "Bhavesh"}, {employee_id: 103, employee_name: "Madan"}])3 Truy vấn mảng theo độ dài mảng.Để tìm các mảng có số lượng phần tử cụ thể, hãy sử dụng toán tử $size. Ví dụ: sau đây chọn tài liệu có hai phần tử trong mảng db.employee.insert([{employee_id: 101, employee_name: "Ishan"}, {employee_id: 102, employee_name: "Bhavesh"}, {employee_id: 103, employee_name: "Madan"}])4 Phép chiếuTrong MongoDB, phép chiếu đề cập đến việc chỉ chọn dữ liệu được yêu cầu thay vì toàn bộ dữ liệu của tài liệu. Nếu một tài liệu có năm trường và bạn chỉ muốn hiển thị ba trường trong số đó, hãy chỉ chọn ba trường trong số đó Phương thức find() trong MongoDB chấp nhận tham số tùy chọn thứ hai, là danh sách các trường cần truy xuất, như được giải thích trong Tài liệu truy vấn MongoDB. Khi bạn sử dụng phương thức find() trong MongoDB, nó sẽ hiển thị tất cả các trường của tài liệu. Để ngăn chặn điều này, hãy tạo một danh sách các trường có giá trị 1 hoặc 0. Giá trị 1 cho biết trường sẽ hiển thị, trong khi 0 cho biết trường sẽ bị ẩn cú pháp db.employee.insert([{employee_id: 101, employee_name: "Ishan"}, {employee_id: 102, employee_name: "Bhavesh"}, {employee_id: 103, employee_name: "Madan"}])5 Ví dụ Chúng ta sẽ xem xét ví dụ trước về bộ sưu tập sản phẩm. Chạy lệnh dưới đây trên mongoshell để tìm hiểu cách hoạt động của phép chiếu db.employee.insert([{employee_id: 101, employee_name: "Ishan"}, {employee_id: 102, employee_name: "Bhavesh"}, {employee_id: 103, employee_name: "Madan"}])6 Hãy nhớ rằng trường _id luôn được hiển thị trong khi thực hiện phương thức find(); . Làm cách nào để truy vấn dữ liệu hiệu quả trong bộ sưu tập MongoDB lớn?Hiển thị hoạt động trên bài đăng này. . Tạo đúng chỉ số và cẩn thận sử dụng chỉ số phức hợp. (. Sử dụng phân trang bên mongo Cố gắng tìm ra các truy vấn được sử dụng nhiều nhất và xây dựng chỉ mục tổng hợp xung quanh đó Chỉ số hợp chất tuân thủ nghiêm ngặt trình tự, vì vậy hãy đọc tài liệu và thực hiện thử nghiệm Ngoài ra, hãy thử truy vấn được bảo hiểm cho các truy vấn giống như 'tóm tắt' Bộ sưu tập trong MongoDB có thể lớn đến mức nào?Ghi chú
Kích thước trung bình của các giá trị khóa phân đoạn 512 byte 256 byte Số lần chia tối đa 32,768 65,536 Kích thước bộ sưu tập tối đa (Kích thước khối 64 MB) 1TB 2 TB Kích thước bộ sưu tập tối đa (Kích thước khối 128 MB) 2 TB 4 TB Kích thước bộ sưu tập tối đa (Kích thước khối 256 MB) 4 TB 8 TB Làm cách nào tôi có thể thực hiện truy vấn MongoDB nhanh hơn?Tối ưu hóa hiệu suất truy vấn . Tạo chỉ mục để hỗ trợ truy vấn Giới hạn số lượng kết quả truy vấn để giảm nhu cầu mạng Sử dụng phép chiếu để chỉ trả lại dữ liệu cần thiết Sử dụng $hint để chọn một chỉ mục cụ thể Sử dụng toán tử gia tăng để thực hiện thao tác phía máy chủ Bạn có thể truy vấn nhiều bộ sưu tập trong MongoDB không?Tập hợp — như nghĩa đen cho thấy nó liên quan đến việc kết hợp nhiều thứ khác nhau, tương tự như vậy trong MongoDb tập hợp là một kỹ thuật để truy vấn dữ liệu từ nhiều tập hợp bằng cách nhóm hoặc nối chúng, sau đó thực hiện nhiều thao tác khác nhau (được giải thích sau trong tài liệu này) rồi trả về kết quả được tính toán |