Nhóm mongodb theo trường lồng nhau

Trong thế giới ngày nay, dữ liệu phi cấu trúc đang phát triển theo cấp số nhân là điều bình thường mới đối với doanh nghiệp. Quản lý và nhận thông tin chi tiết từ dữ liệu phi cấu trúc là một thách thức đối với một tổ chức đang phát triển. Theo nghiên cứu, khối lượng dữ liệu phi cấu trúc lớn hơn khối lượng dữ liệu có cấu trúc khi chơi. Các phương pháp xử lý dữ liệu truyền thống như Hệ thống quản lý cơ sở dữ liệu quan hệ (RDBMS) không được khuyến nghị khi xử lý dữ liệu bán cấu trúc hoặc không cấu trúc. Đây là nơi Cơ sở dữ liệu NoQuery mã nguồn mở, hướng tài liệu, chẳng hạn như MongoDB đến để giải cứu.  

Truy vấn là một hoạt động cơ bản của hệ thống quản lý cơ sở dữ liệu có thể sửa đổi, truy xuất, chèn và xóa dữ liệu. Bài viết này nhằm mục đích thảo luận về hướng dẫn từng bước về cách thực hiện Truy vấn lồng nhau trong MongoDB và một số khía cạnh quan trọng của truy vấn lồng nhau.

Mục lục

MongoDB là gì?

MongoDB Logo : MongoDB Nested QueryNguồn hình ảnh

MongoDB là một cơ sở dữ liệu NoSQL định hướng tài liệu mã nguồn mở. Nó được phát triển và duy trì bởi MongoDB. Inc theo Giấy phép Công cộng Phía Máy chủ (SSPL) và được phát hành lần đầu vào tháng 2 năm 2009. MongoDB được thiết kế để xử lý khối lượng dữ liệu lớn một cách hiệu quả. Nó cũng hỗ trợ lưu trữ và truy xuất dữ liệu ở định dạng tài liệu hoặc khóa-giá trị.  

Nó có sẵn dưới dạng Đám mây cũng như trên số nguyên tố i. e Dịch vụ máy chủ. MongoDB cung cấp cả phiên bản Doanh nghiệp và Cộng đồng của cơ sở dữ liệu tài liệu phân tán mạnh mẽ của nó

Mô hình tài liệu MongoDB khá nổi tiếng trong cộng đồng nhà phát triển vì nó cung cấp tất cả các khả năng cần thiết để đáp ứng các yêu cầu phức tạp nhất ở mọi quy mô. Nó cung cấp trình điều khiển cho hơn 10 ngôn ngữ bao gồm C ++, Java, Ruby, Node. js, Perl, C#, Scala và các ngôn ngữ lập trình khác

Các tính năng chính của MongoDB

Key features of MongoDB: MongoDB Nested QueryNguồn hình ảnh

Các tính năng chính của MongoDB như sau

  • Hiệu suất cao. MongoDB được biết đến với hiệu suất cao và độ bền dữ liệu so với các cơ sở dữ liệu khác
  • tổng hợp. Tính năng này cho phép bạn thực hiện các thao tác trên bộ sưu tập tài liệu và nhận được một kết quả tổng hợp duy nhất.  
  • Nhân rộng. Duy trì nhiều bản sao của tài liệu và bộ sưu tập đảm bảo hiệu suất cao và thời gian ngừng hoạt động thấp trong MongoDB.  
  • Cơ sở dữ liệu ít lược đồ. Là một cơ sở dữ liệu NoSQL, MongoDB tuân theo một tiện ích không có lược đồ. Cơ sở dữ liệu không có lược đồ được định nghĩa là một tập hợp nhiều tài liệu có thể khác nhau trong lược đồ. Không bắt buộc phải xác định trước lược đồ cho bộ sưu tập hoặc tài liệu trong MongoDB
  • Định hướng tài liệu. Thay vì lưu trữ dữ liệu ở định dạng bảng, dữ liệu được lưu trữ ở định dạng cặp khóa-giá trị. MongoDB tận dụng định dạng BSON để lưu trữ dữ liệu
  • sharding. Để thực hiện tính năng khả dụng, dữ liệu đang được phân phối giữa các phân vùng vật lý khác nhau được gọi là phân đoạn. MongoDB có khả năng cân bằng tải và phân mảnh tự động tích hợp sẵn
  • GridFS. Tính năng này cho phép bạn chia tệp thành các phần nhỏ hơn và lưu chúng vào các tài liệu khác nhau mà không làm phức tạp hàng loạt. Nó cũng tạo điều kiện tăng tính khả dụng của dữ liệu khi sử dụng MongoDB.  
  • lập chỉ mục. Tất cả dữ liệu nằm trong tài liệu và bộ sưu tập được lập chỉ mục trong MongoDB. Tính năng này đảm bảo thời gian phản hồi cao trong khi truy vấn cơ sở dữ liệu

Truy vấn lồng nhau là gì?

Truy vấn lồng nhau hoặc Truy vấn được nhúng là những truy vấn có một truy vấn khác được nhúng trong chúng. Đối với các truy vấn lồng nhau, truy vấn nội bộ chỉ được thực hiện một lần khi bắt đầu. Truy vấn bên ngoài được thực hiện bằng cách sử dụng kết quả của truy vấn bên trong. Do đó, truy vấn bên trong được sử dụng khi thực hiện truy vấn bên ngoài

Sao chép dữ liệu từ MongoDB trong vài phút bằng cách sử dụng đường dẫn dữ liệu không mã của Hevo

Hevo Data, một nền tảng Đường ống dữ liệu được quản lý hoàn toàn, có thể giúp bạn tự động hóa, đơn giản hóa và làm phong phú quy trình sao chép dữ liệu của mình chỉ bằng một vài cú nhấp chuột. Với nhiều loại trình kết nối và Đường ống dữ liệu cực nhanh của Hevo, bạn có thể trích xuất và tải dữ liệu từ hơn 100 Nguồn dữ liệu như MongoDB thẳng vào Kho dữ liệu của mình hoặc bất kỳ Cơ sở dữ liệu nào. Để tiếp tục hợp lý hóa và chuẩn bị dữ liệu của bạn để phân tích, bạn có thể xử lý và làm phong phú thêm dữ liệu chi tiết thô bằng cách sử dụng Lớp chuyển đổi tích hợp và mạnh mẽ của Hevo mà không cần viết một dòng mã nào

BẮT ĐẦU VỚI HEVO MIỄN PHÍ

Hevo là nền tảng sao chép dữ liệu nhanh nhất, dễ dàng nhất và đáng tin cậy nhất sẽ tiết kiệm gấp nhiều lần băng thông kỹ thuật và thời gian của bạn. Hãy dùng thử bản dùng thử miễn phí truy cập đầy đủ trong 14 ngày của chúng tôi ngay hôm nay để trải nghiệm Sao chép dữ liệu hoàn toàn tự động mà không gặp rắc rối

MongoDB Nested Query là gì?

MongoDB cung cấp một tính năng nổi bật có tên là Embedded hoặc Nested Document. Tài liệu nhúng hoặc lồng nhau là một loại tài liệu chứa một tài liệu trong một tài liệu khác. Đó là nếu một bộ sưu tập chứa một tài liệu, tài liệu đó chứa một tài liệu khác, một tài liệu khác chứa một tài liệu con khác, v.v., các loại tài liệu đó được gọi là tài liệu nhúng/lồng nhau

Một vài điểm cần lưu ý ở đây

  • Có thể lồng nhau tới cấp 100 trong MongoDB
  • Kích thước tài liệu tổng thể trong các truy vấn lồng nhau phải nằm trong giới hạn 16 MB

Hiểu các khía cạnh truy vấn lồng nhau của MongoDB

Cơ sở dữ liệu MongoDB không hỗ trợ truy vấn phụ hoặc tham gia. Tính năng Truy vấn nhúng hoặc Truy vấn lồng nhau có sẵn trong MongoDB để nhận chức năng truy vấn phụ hoặc tham gia.    

Tạo một tài liệu nhúng/lồng nhau

MongoDB giúp dễ dàng nhúng tài liệu vào tài liệu khác. Như bạn đã biết, tài liệu shell mongo được xác định bởi dấu ngoặc nhọn ({}) và bên trong các dấu ngoặc nhọn này là các cặp trường/giá trị.  

Bạn có thể sử dụng dấu ngoặc nhọn {} để nhúng hoặc đặt một tài liệu khác trong các trường này. Tài liệu này có thể bao gồm các cặp trường-giá trị hoặc các tài liệu từng phần khác

cú pháp

{  
field: { field1: value1, field2: value2, field3: value3 }
}

Ví dụ về Nested Query trong MongoDB

Có một cơ sở dữ liệu “công ty” như trong hình dưới đây. Cơ sở dữ liệu này hiện có một bộ sưu tập có tên là "Khoảng không quảng cáo" chứa các tài liệu sau.  

MongoDB Nested Query: Example Illustration

Truy vấn lồng nhau sau đây sẽ chèn vào bộ sưu tập khoảng không quảng cáo

db.inventory.insertMany( [
   { item: "journal", qty: 25, size: { h: 14, w: 21, uom: "cm" }, status: "A" },
   { item: "notebook", qty: 50, size: { h: 8.5, w: 11, uom: "in" }, status: "A" },
   { item: "paper", qty: 100, size: { h: 8.5, w: 11, uom: "in" }, status: "D" },
   { item: "planner", qty: 75, size: { h: 22.85, w: 30, uom: "cm" }, status: "D" },
   { item: "postcard", qty: 45, size: { h: 10, w: 15.25, uom: "cm" }, status: "A" }
]);

Bạn có thể nhận thấy trong bộ sưu tập khoảng không quảng cáo, bạn có 5 tài liệu chứa tài liệu lồng nhau. Bạn có thể truy xuất các tài liệu lồng nhau này bằng cách sử dụng db. thu thập. phương thức find() trong mongosh.  

Tài liệu này có tên trường là “mục” chứa một tài liệu khác và tài liệu này chứa hai trường có giá trị (nghĩa là sku, màu sắc)

Điều gì làm cho quy trình ETL của Hevo trở thành tốt nhất trong lớp?

Cung cấp giải pháp ETL chất lượng cao có thể là một nhiệm vụ khó khăn nếu bạn có một lượng lớn dữ liệu. Nền tảng không mã, tự động của Hevo trao quyền cho bạn mọi thứ bạn cần để có trải nghiệm sao chép dữ liệu mượt mà

Kiểm tra những gì làm cho Hevo tuyệt vời

  • Được quản lý hoàn toàn. Hevo không yêu cầu quản lý và bảo trì vì đây là một nền tảng hoàn toàn tự động
  • Chuyển đổi dữ liệu. Hevo cung cấp một giao diện đơn giản để hoàn thiện, sửa đổi và làm giàu dữ liệu mà bạn muốn truyền tải
  • Tạo thông tin chi tiết nhanh hơn. Hevo cung cấp khả năng sao chép dữ liệu gần thời gian thực để bạn có quyền truy cập vào việc tạo thông tin chi tiết theo thời gian thực và đưa ra quyết định nhanh hơn.  
  • Quản lý lược đồ. Hevo có thể tự động phát hiện lược đồ của dữ liệu đến và ánh xạ nó tới lược đồ đích
  • Cơ sở hạ tầng có thể mở rộng. Hevo có tích hợp sẵn cho hơn 100 nguồn (với hơn 40 nguồn miễn phí) có thể giúp bạn mở rộng quy mô cơ sở hạ tầng dữ liệu của mình theo yêu cầu
  • Hỗ trợ trực tuyến. Nhóm Hevo luôn sẵn sàng mở rộng hỗ trợ đặc biệt cho khách hàng của mình thông qua trò chuyện, email và các cuộc gọi hỗ trợ
Đăng ký tại đây để dùng thử miễn phí 14 ngày

Các loại đối sánh truy vấn lồng nhau trong MongoDB

You can use the query filter document { : }  to specify an equality condition on field. referes to the field present in document and talks about the document to match.

Điều kiện bình đẳng sẽ tìm kiếm các tài liệu được nhúng cần khớp chính xác với tài liệu đã chỉ định, bao gồm cả thứ tự của các trường

Ví dụ: truy vấn sau đây chọn tất cả các tài liệu có kích thước trường bằng với tài liệu { h. 14, w. 21, uôm. “cm” }

Truy vấn

db.inventory.find(  { size: { w: 21, h: 14, uom: "cm" } }  )

MongoDB Nested Query khớp trên một trường lồng nhau

Bạn có thể sử dụng ký hiệu dấu chấm (“trường. nestedField”) để chỉ định tiêu chí truy vấn cho các trường trong tài liệu được nhúng/lồng nhau. Đối với các truy vấn sử dụng ký hiệu dấu chấm, các trường và trường lồng nhau phải được đặt trong dấu ngoặc kép.  

Đây là cú pháp sẽ trông như thế nào

{
 	 {  : } 
}

Ví dụ.  

db.inventory.find( { "size.uom": "in" } )

Ví dụ trên chọn tất cả các tài liệu có trường kích thước trường lồng nhau uom bằng “in”

Kết hợp truy vấn lồng nhau MongoDB bằng cách sử dụng toán tử truy vấn

Trong tài liệu bộ lọc truy vấn, bạn có thể sử dụng toán tử truy vấn để chỉ định các điều kiện của dạng cú pháp sau

cú pháp.  

{ : { :  }, .. }
  • Truy vấn bằng toán tử Nhỏ hơn ($lt) trên Trường

MongoDB cung cấp $lt để chọn tài liệu có giá trị trường nhỏ hơn giá trị đã xác định. Điều này áp dụng cho các tài liệu không chứa các trường

cú pháp

{ field: { $lt: value } }

Ví dụ. db. hàng tồn kho. tìm ({“kích thước. h”. { $lt. 15 } } )

Truy vấn trên sẽ trả về tất cả các tài liệu có “kích thước. h”ít hơn 15

  • Truy vấn bằng Toán tử lớn hơn ($gt) trên Trường

Tương tự như toán tử nhỏ hơn đã thảo luận ở trên, bạn có thể sử dụng toán tử lớn hơn trong truy vấn lồng nhau MongoDB. Toán tử $gt được sử dụng để chọn tài liệu có giá trị trường lớn hơn giá trị đã xác định

cú pháp

{ field: { $gt: value } }

Ví dụ. db. hàng tồn kho. tìm ({“kích thước. h”. { $gt. 55 } } )

Truy vấn trên sẽ trả về tất cả các tài liệu có “kích thước. h” lớn hơn 55

  • Truy vấn bằng toán tử Không bằng ($ne) trên Trường

MongoDB cung cấp $ne để chọn tài liệu có giá trị trường không bằng giá trị đã xác định. Điều này áp dụng cho các tài liệu không chứa các trường

cú pháp

________số 8

Ví dụ. db. hàng tồn kho. tìm ({ “mục. màu". { $ne. "màu xanh da trời"} })

Truy vấn trên sẽ trả về tất cả các tài liệu có màu mục không phải là màu xanh lam

MongoDB Nested Query Match sử dụng toán tử truy vấn VÀ điều kiện

Bạn có thể sử dụng truy vấn sau để chọn tất cả tài liệu có trường lồng nhau h nhỏ hơn 15, trường lồng nhau uom bằng “in” và trường trạng thái bằng “D”

Ví dụ.
db. hàng tồn kho. tìm ({“kích thước. h”. { $lt. 15 }, “kích thước. uôm”. “trong”, trạng thái. “D” } )

Phần kết luận

Trong bài viết này, chúng ta đã thảo luận về Truy vấn lồng nhau trong MongoDB và các phương pháp khác nhau để thực hiện Truy vấn lồng nhau trong MongoDB. Và, chúng tôi đã đề cập đến các hoạt động khác nhau với các ví dụ

Ghé thăm trang web của chúng tôi để khám phá Hevo

MongoDB là một công cụ tuyệt vời để lưu trữ dữ liệu kinh doanh của bạn. Tuy nhiên, đôi khi, bạn cần chuyển dữ liệu này sang Kho dữ liệu để phân tích thêm. Xây dựng giải pháp nội bộ cho quy trình này có thể là một nhiệm vụ tốn kém và tốn thời gian. Mặt khác, Hevo Data cung cấp Đường ống dữ liệu không mã có thể tự động hóa quy trình truyền dữ liệu của bạn, do đó cho phép bạn tập trung vào các khía cạnh khác của doanh nghiệp như Phân tích, Quản lý khách hàng, v.v. Nền tảng này cho phép bạn chuyển dữ liệu từ hơn 100 nguồn như MongoDB sang Kho dữ liệu dựa trên đám mây như Snowflake, Google BigQuery, Amazon Redshift, v.v. Nó sẽ cung cấp cho bạn trải nghiệm không rắc rối và giúp cuộc sống công việc của bạn dễ dàng hơn nhiều

Chúng ta có thể sử dụng nhóm theo trong MongoDB không?

MongoDB group by được sử dụng để nhóm dữ liệu từ bộ sưu tập, chúng ta có thể đạt được nhóm theo mệnh đề bằng hàm tổng hợp và phương thức nhóm trong MongoDB . Mặc dù sử dụng hàm tổng hợp với các hoạt động truy vấn nhóm theo mệnh đề nhanh hơn như truy vấn thông thường, nhưng về cơ bản, hàm tổng hợp được sử dụng trong nhiều điều kiện.

$root trong MongoDB là gì?

Tài nguyên gốc là điểm bắt đầu cho API Trình quản lý đám mây . Từ đây, bạn có thể duyệt qua các liên kết để truy cập tất cả các tài nguyên API khác.

Trường lồng nhau MongoDB ở đâu?

Trong MongoDB, bạn có thể truy cập vào các trường tài liệu được lồng/nhúng của bộ sưu tập bằng cách sử dụng ký hiệu dấu chấm và khi bạn đang sử dụng ký hiệu dấu chấm, .

Nhóm có sử dụng chỉ mục MongoDB không?

$group không sử dụng dữ liệu chỉ mục .