Cách truy vấn hoạt động trong MongoDB

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

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 Customers, đây là một danh sách khách hàng hoàn toàn giả mạo

Phương thức

db.Customers.find()

//returns all documents in the collection
1 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(,)
  • tham số 'truy vấn' hoặc bộ lọc đầu tiên chỉ định tìm kiếm
  • tham số 'phép chiếu' tùy chọn thứ hai chỉ định phần nào của mỗi tài liệu phù hợp được trả về

Để viết và xây dựng các truy vấn

db.Customers.find()

//returns all documents in the collection
3, 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

Cách truy vấn hoạt động trong MongoDB

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 collection
1 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

Cách truy vấn hoạt động trong MongoDB

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

Cách truy vấn hoạt động trong 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 Customers, có sẵn ở đây dưới dạng. tải xuống tệp json. Nếu bạn có một bộ sưu tập hiện có,

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ụ

Cách truy vấn hoạt động trong MongoDB

Sau đó, chọn JSON làm định dạng nhập

Cách truy vấn hoạt động trong MongoDB

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

Cách truy vấn hoạt động trong MongoDB

Ở đây chúng tôi sẽ thêm tài liệu nguồn JSON của chúng tôi, Customers

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à Customers. Lưu ý vốn C

Cách truy vấn hoạt động trong MongoDB

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

Cách truy vấn hoạt động trong MongoDB

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 collection
1 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ụ

Cách truy vấn hoạt động trong MongoDB

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 collection
1 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 Norfolk
1), 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 Norfolk
2). Đố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 Norfolk

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 Norfolk
4

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 Norfolk
5 (==),
db.Customers.find({
   'Addresses.County': 'Norfolk'
})

//returns the documents that have an address in the county of Norfolk
6 (>),
db.Customers.find({
   'Addresses.County': 'Norfolk'
})

//returns the documents that have an address in the county of Norfolk
7 (<),
db.Customers.find({
   'Addresses.County': 'Norfolk'
})

//returns the documents that have an address in the county of Norfolk
8 (>=),
db.Customers.find({
   'Addresses.County': 'Norfolk'
})

//returns the documents that have an address in the county of Norfolk
9 (<=),
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 collection
1

Đó là một con trỏ tới các tài liệu được chuyển trở lại. Nó chứa 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 collection
1. Đ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

Truy vấn MongoDB hoạt động như thế nào?

MongoDB hoạt động như thế nào? . Bộ sưu tập bao gồm các bộ tài liệu, tương đương với các bảng trong cơ sở dữ liệu quan hệ. MongoDB stores data objects in collections and documents instead of the tables and rows used in traditional relational databases. Collections comprise sets of documents, which are equivalent to tables in a relational database.

MongoDB có sử dụng truy vấn không?

MongoDB sử dụng Ngôn ngữ truy vấn MongoDB (MQL) , được thiết kế để các nhà phát triển dễ dàng 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.

Sự khác biệt giữa lệnh và truy vấn trong MongoDB là gì?

truy vấn trong mongo shell trả về một con trỏ, trong khi lệnh cơ sở dữ liệu trả về một tài liệu luôn có trạng thái "ok" và một hoặc nhiều thông tin .

Các truy vấn MongoDB được gọi là gì?

Ngôn ngữ truy vấn MongoDB (MQL) Truy vấn MongoDB dựa trên JavaScript. Ngôn ngữ này khá dễ học và có sẵn nhiều công cụ để truy vấn dữ liệu MongoDB bằng cú pháp SQL. Khi truy vấn dữ liệu, bạn có một loạt các tùy chọn, toán tử, biểu thức và bộ lọc đặc biệt.