Truy vấn MongoDB hoạt động như thế nào?
Trong bài viết này, chúng ta sẽ tìm hiểu những kiến thức cơ bản về MongoDB find, phương thức được sử dụng để tìm nạp tài liệu từ bộ sưu tập MongoDB Show Chúng ta sẽ xem qua một số ví dụ về truy vấn bằng cách sử dụng Studio 3T và bộ dữ liệu Phương thức db.Customers.find() //returns all documents in the collection1 trong MongoDB chọn tài liệu trong bộ sưu tập hoặc chế độ xem và trả về con trỏ tới tài liệu đã chọn. Nó có hai tham số. truy vấn và chiếu db.collection.find(
Để viết và xây dựng các truy vấn db.Customers.find() //returns all documents in the collection3, chúng tôi sẽ sử dụng IntelliShell của Studio 3T với tính năng tự động hoàn thành truy vấn trong các ví dụ của chúng tôi Nếu bạn không biết Ngôn ngữ truy vấn MongoDB, bạn vẫn có thể tạo các truy vấn db.Customers.find() //returns all documents in the collection1 thông qua Trình tạo truy vấn trực quan kéo và thả. Chỉ cần kéo các trường, xác định giá trị và nhấn Chạy Nếu bạn thông thạo SQL và muốn tiết kiệm một chút thao tác gõ, Studio 3T cũng có Truy vấn SQL, cho phép bạn sử dụng SQL để truy vấn MongoDB Dùng thử IntelliShell, Visual Query Builder và SQL Query bằng cách tải xuống phiên bản Studio 3T mới nhất Chúng tôi sẽ truy vấn bộ sưu tập Mở Studio 3T và kết nối với cơ sở dữ liệu MongoDB của bạn Tiếp theo, mở Trình hướng dẫn nhập từ thanh công cụ Sau đó, chọn JSON làm định dạng nhập Nhấp vào OK Nhấp vào + để thêm tài liệu nguồn JSON, – để xóa chúng hoặc biểu tượng khay nhớ tạm để dán dữ liệu JSON từ khay nhớ tạm Ở đây chúng tôi sẽ thêm tài liệu nguồn JSON của chúng tôi, Bấm đúp vào một ô để nhập vào bộ sưu tập đích. Chúng tôi đang đặt tên cho chúng tôi là Trong cột Chế độ chèn, bấm đúp vào một ô để chọn một trong các chế độ chèn từ trình đơn thả xuống Nhấp vào Thực thi để chạy quá trình nhập. Bạn sẽ thấy bộ sưu tập mới trong cây kết nối, bên trái Bây giờ chúng ta đã sẵn sàng thử các ví dụ về phương pháp db.Customers.find() //returns all documents in the collection1 mà bạn có thể nhập/dán và chỉnh sửa trong IntelliShell Hãy mở IntellIShell bằng cách nhấp vào biểu tượng trên thanh công cụ Và thử các truy vấn sau db.Customers.find() //returns all documents in the collection Khi các tham số truy vấn và phép chiếu không được chỉ định, phương thức db.Customers.find() //returns all documents in the collection1 trả về tất cả các tài liệu trong bộ sưu tập db.Customers.find({ 'Addresses.County': 'Norfolk' }) //returns the documents that have an address in the county of Norfolk Truy vấn này chỉ trả về các tài liệu có chứa địa chỉ ở hạt Norfolk. Có một tham số bộ lọc nhưng không có phép chiếu nào được chỉ định nên toàn bộ tài liệu với tất cả các trường được trả về Ở đây chúng tôi đã chỉ định một danh sách các trường mà chúng tôi muốn trả về làm tham số phép chiếu ________số 8_______Khách hàng có thể sử dụng nhiều địa chỉ cùng một lúc (cơ quan, nhà riêng, v.v. ), và anh ta có thể di chuyển, vì vậy chúng tôi đã chọn chỉ trả lại địa chỉ phù hợp ( db.Customers.find({ 'Addresses.County': 'Norfolk' }) //returns the documents that have an address in the county of Norfolk1), cùng với tên của khách hàng ( db.Customers.find({ 'Addresses.County': 'Norfolk' }) //returns the documents that have an address in the county of Norfolk2). Đối với truy vấn này, đó là tất cả dữ liệu chúng tôi cần, vậy tại sao phải truy xuất nhiều hơn mức cần thiết? Tham số phép chiếu cho phép bạn chỉ định xem danh sách các trường hoặc mảng có được trả về hay không Nếu bạn đang cung cấp một danh sách bao gồm dữ liệu sẽ được trả về, thì bạn chỉ được phép loại trừ trường db.Customers.find({ 'Addresses.County': 'Norfolk' }) //returns the documents that have an address in the county of Norfolk3 Nếu bạn muốn tìm kiếm ở nhiều quận thì sao? db.Customers.find({ 'Addresses.County': { $in: ['Essex', 'Suffolk', 'Norfolk', 'Cambridgeshire'] } }) //customers whose address is in East Anglia Bộ lọc cho phép nhiều hơn bình đẳng đơn giản với một giá trị để chọn tài liệu. Trong trường hợp này, chúng tôi đã liệt kê một số giá trị để kiểm tra bằng cách sử dụng toán tử truy vấn so sánh db.Customers.find({ 'Addresses.County': 'Norfolk' }) //returns the documents that have an address in the county of Norfolk4 There are several others with fairly obvious meanings, such as db.Customers.find({ 'Addresses.County': 'Norfolk' }) //returns the documents that have an address in the county of Norfolk5 (==), db.Customers.find({ 'Addresses.County': 'Norfolk' }) //returns the documents that have an address in the county of Norfolk6 (>), db.Customers.find({ 'Addresses.County': 'Norfolk' }) //returns the documents that have an address in the county of Norfolk7 (<), db.Customers.find({ 'Addresses.County': 'Norfolk' }) //returns the documents that have an address in the county of Norfolk8 (>=), db.Customers.find({ 'Addresses.County': 'Norfolk' }) //returns the documents that have an address in the county of Norfolk9 (<=), db.Customers.find({ 'Addresses.County': 'Norfolk' }, { '_id': 0, 'Full Name': 1, 'Addresses.0 (!=) and db.Customers.find({ 'Addresses.County': 'Norfolk' }, { '_id': 0, 'Full Name': 1, 'Addresses.1 (not in). Ngoài ra còn có một loạt các toán tử logic. Có rất nhiều toán tử chiếu và truy vấn MongoDB khác cho phép bạn thực hiện các bộ lọc khá phức tạp, nhưng đó là một chủ đề khác Sử dụng các phương pháp con trỏPhương thức tìm MongoDB không thực sự trả về dữ liệu mặc dù theo mặc định, trình bao mongo in ra 20 hàng đầu tiên khi nó thực thi phương thức db.Customers.find() //returns all documents in the collection1 Đó là một con trỏ tới các tài liệu được chuyển trở lại. Nó giữ một tham chiếu đến các tài liệu phù hợp với tiêu chí truy vấn mà bạn chuyển đến phương thức db.Customers.find() //returns all documents in the collection1. Điều này cho phép bạn chỉ định bạn muốn xử lý gì trên dữ liệu được trả về Có một số phương thức con trỏ này đếm()Phương thức con trỏ count() rất hữu ích để trả về số lượng tài liệu đáp ứng tiêu chí Ví dụ, trong cơ sở dữ liệu khách hàng của chúng tôi db.Customers.find({'Addresses.County': 'Norfolk'}).count() cho biết có bao nhiêu khách hàng có địa chỉ ở Quận Norfolk giới hạn()Phương thức con trỏ limit() giới hạn số trong kết quả ở giá trị bạn chuyển, sao cho db.Customers.find({'Addresses.County': 'Norfolk'}).limit(1) chỉ trả lại khách hàng đầu tiên nhảy()Ngoài ra còn có phương thức skip() để bạn có thể dễ dàng triển khai cửa sổ cuộn trong ứng dụng db.Customers.find({ 'Addresses.County': 'Norfolk' }, { '_id': 0, 'Full Name': 1 }).sort({ 'Name.Last Name': 1 }).skip(10).limit(20) Như bạn sẽ nhận thấy, bạn có thể xếp chồng các phương thức này lên nhau và sử dụng pretty() db.Customers.find({'Addresses.County': 'Norfolk'}).limit(1).pretty() để trả lại tài liệu ở định dạng dễ đọc Các phương thức skip() và limit() không có ý nghĩa gì nếu không có phương thức sort() vì nếu không thì kết quả được cho là không có thứ tự Phương thức toArray() là phép thuật mạnh mẽ vì nó tạo một mảng JSON từ tất cả các tài liệu do con trỏ chỉ định. Đây là cách dễ nhất để chuyển kết quả cho ứng dụng Thực hiện theo các bài tập từng bước về cách chạy câu lệnh find trên Academy 3T, trang chủ của các khóa học MongoDB 101 và MongoDB 201 miễn phí của chúng tôi. Bài học về phương pháp tìm kiếm MongoDB đã bao gồm bạn Các truy vấn MongoDB hoạt động như thế nào?Truy vấn MongoDB mang lại sự đơn giản trong quá trình tìm nạp dữ liệu từ cơ sở dữ liệu , tương tự như truy vấn SQL trong ngôn ngữ Cơ sở dữ liệu SQL. Trong khi thực hiện thao tác truy vấn, người ta cũng có thể sử dụng tiêu chí hoặc điều kiện có thể được sử dụng để truy xuất dữ liệu cụ thể từ cơ sở dữ liệu.
MongoDB sử dụng ngôn ngữ truy vấn nào?MongoDB sử dụng Ngôn ngữ truy vấn MongoDB (MQL) , được thiết kế để các nhà phát triển dễ sử dụng. Tài liệu so sánh cú pháp MQL và SQL cho các hoạt động cơ sở dữ liệu phổ biến. |