Chúng ta có thể sử dụng $group trong find mongodb không?

MongoDB là Cơ sở dữ liệu NoSQL mã nguồn mở nổi tiếng được viết bằng C++. MongoDB là Cơ sở dữ liệu hướng tài liệu sử dụng các tài liệu giống JSON với Lược đồ động để lưu trữ dữ liệu. Điều đó có nghĩa là bạn có thể lưu trữ các bản ghi của mình mà không phải lo lắng về Cấu trúc dữ liệu, số lượng trường hoặc loại trường được sử dụng để lưu trữ giá trị. Các tài liệu trong MongoDB tương tự như các đối tượng JSON

Bạn có thể thay đổi cấu trúc của các bản ghi (mà MongoDB gọi là Tài liệu) bằng cách thêm các trường mới hoặc xóa các trường hiện có. Tính năng này của MongoDB cho phép bạn dễ dàng biểu diễn các Mối quan hệ phân cấp, Mảng lưu trữ và các cấu trúc dữ liệu phức tạp khác

Ngày nay, nhiều gã khổng lồ công nghệ, bao gồm Facebook, eBay, Adobe và Google, sử dụng MongoDB để lưu trữ lượng lớn dữ liệu của họ.

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

Chúng ta có thể sử dụng $group trong find mongodb không?
Nguồn hình ảnh

MongoDB cung cấp một loạt các tính năng độc đáo giúp nó trở thành một giải pháp tốt hơn so với các cơ sở dữ liệu thông thường khác. Một số tính năng này được thảo luận dưới đây

  • Sơ đồ ít cơ sở dữ liệu hơn. Cơ sở dữ liệu ít lược đồ cho phép nhiều loại Tài liệu khác nhau được lưu trữ trong một Bộ sưu tập duy nhất (tương đương với một bảng). Nói cách khác, trong cơ sở dữ liệu MongoDB, một bộ sưu tập có thể chứa nhiều Tài liệu, mỗi tài liệu có thể có số lượng Trường, Nội dung và Kích thước khác nhau.

    Không nhất thiết tài liệu này phải giống với tài liệu khác, đây là điều kiện tiên quyết trong Cơ sở dữ liệu quan hệ. Do tính năng này, MongoDB mang đến sự linh hoạt tuyệt vời cho người dùng.
  • Tài liệu dựa trên chỉ mục. Mọi trường trong Tài liệu trong cơ sở dữ liệu MongoDB đều được lập chỉ mục với Chỉ số chính và phụ, giúp truy xuất thông tin từ nhóm dữ liệu dễ dàng hơn.  
  • Khả năng mở rộng. Sharding trong MongoDB cho phép khả năng mở rộng theo chiều ngang. Sharding đề cập đến quá trình phân phối dữ liệu trên nhiều Máy chủ.

    Một lượng lớn dữ liệu được phân chia thành các khối dữ liệu bằng Khóa phân đoạn và các khối dữ liệu này được phân bổ đồng đều trên các Phân đoạn nằm trên nhiều Máy chủ vật lý.
  • Nhân rộng. MongoDB cung cấp tính sẵn sàng cao của dữ liệu bằng cách tạo nhiều bản sao dữ liệu và gửi các bản sao này đến một máy chủ khác để nếu một máy chủ bị lỗi, dữ liệu vẫn có thể được lấy từ Máy chủ khác. Bạn có thể tìm hiểu thêm về MongoDB Replication tại đây

 Đơn giản hóa MongoDB ETL bằng cách sử dụng đường dẫn dữ liệu không mã của Hevo

Dữ liệu Hevo là Đường ống dữ liệu không có mã cung cấp giải pháp được quản lý hoàn toàn để thiết lập Tích hợp dữ liệu cho hơn 100 nguồn dữ liệu (bao gồm hơn 40 nguồn miễn phí) và sẽ cho phép bạn tải trực tiếp dữ liệu từ các nguồn như MongoDB đến Kho dữ liệu hoặc Đích . Nó sẽ tự động hóa luồng dữ liệu của bạn trong vài phút mà không cần viết bất kỳ dòng mã nào. Kiến trúc chịu lỗi của nó đảm bảo rằng dữ liệu của bạn được an toàn và nhất quán. Hevo cung cấp cho bạn một giải pháp thực sự hiệu quả và hoàn toàn tự động để quản lý dữ liệu theo thời gian thực và luôn có sẵn dữ liệu để phân tích.  

Bắt đầu với Hevo miễn phí

Cùng điểm qua một số tính năng nổi bật của Hevo

  • Được quản lý hoàn toàn. Nó không yêu cầu quản lý và bảo trì vì Hevo là một nền tảng hoàn toàn tự động
  • Chuyển đổi dữ liệu. Nó 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 bạn muốn chuyển.  
  • Thời gian thực. Hevo cung cấp di chuyển dữ liệu theo thời gian thực. Vì vậy, dữ liệu của bạn luôn sẵn sàng để phân tích
  • 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
  • kết nối. Hevo hỗ trợ hơn 100 Tích hợp cho nền tảng SaaS FTP/SFTP, Tệp, Cơ sở dữ liệu, công cụ BI và API REST gốc & Trình kết nối Webhooks. Nó hỗ trợ nhiều điểm đến khác nhau bao gồm Google BigQuery, Amazon Redshift, Snowflake, Firebolt, Data Warehouses; .   
  • Chắc chắn. Hevo có kiến ​​trúc chịu lỗi đảm bảo rằng dữ liệu được xử lý một cách an toàn, nhất quán và không bị mất dữ liệu
  • Hevo được xây dựng để mở rộng quy mô. Khi số lượng nguồn và khối lượng dữ liệu của bạn tăng lên, Hevo sẽ mở rộng quy mô theo chiều ngang, xử lý hàng triệu bản ghi mỗi phút với rất ít độ trễ
  • Giám sát trực tiếp. Giám sát nâng cao cung cấp cho bạn chế độ xem một cửa để theo dõi tất cả các hoạt động diễn ra trong Đường ống dữ liệ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

Làm cách nào để sử dụng Phương thức tổng hợp nhóm MongoDB?

Chúng ta có thể sử dụng $group trong find mongodb không?
Nguồn hình ảnh

A) Cú pháp chung của MongoDB Groupby Aggregation Method

{ $group (Aggregation is used to define group by): { _id: , : {  :  },  : ,  :  } }... :  } } }

B) Các tham số liên quan đến MongoDB Groupby Aggregation

Các tham số liên quan đến mô tả cú pháp của MongoDB Groupby Aggregation Method như sau

  • nhóm $. $group xuất ra một tài liệu cho từng nhóm tài liệu đầu vào riêng biệt dựa trên biểu thức _id đã chỉ định. Tập hợp này tạo ra trường _id, chứa nhóm theo khóa của các bản ghi riêng biệt. Các tài liệu đầu ra cũng có thể bao gồm các trường được tính toán có chứa các giá trị của biểu thức bộ tích lũy
  • _Tôi. Đây là trường bắt buộc của MongoDB Group By trong khi sử dụng tổng hợp với toán tử $group. Để tính toán giá trị tích lũy từ tất cả các giá trị đầu vào, bạn có thể chỉ định giá trị id với giá trị null
  • ắc quy. Bộ tích lũy là các toán tử trong MongoDB Groupby duy trì trạng thái của chúng (e. g. , tổng, tối đa, tối thiểu và dữ liệu liên quan) trong khi tài liệu di chuyển qua đường ống. Một số toán tử Accumulator được liệt kê bên dưới
    • $addToSet. Đối với mỗi nhóm, toán tử này trả về một mảng các giá trị biểu thức duy nhất
    • $trung bình. Sử dụng toán tử $group, toán tử $avg trả về giá trị trung bình của tất cả các trường số. Toán tử này bỏ qua các giá trị không phải là số trong tập hợp
    • $đầu tiên. Toán tử này trả về một giá trị từ tài liệu đầu tiên của mỗi nhóm
    • $ cuối cùng. Toán tử này trả về một giá trị từ tài liệu cuối cùng của mỗi nhóm
    • tối đa $. Toán tử này trả về giá trị lớn nhất từ ​​mỗi nhóm
    • $min. Toán tử này trả về giá trị tối thiểu từ mỗi nhóm
    • $mergeObjects. Toán tử này trả về một tài liệu được tạo bằng cách kết hợp các tài liệu đầu vào cho từng nhóm
    • đẩy $. Toán tử này trả về một mảng các giá trị biểu thức cho từng nhóm tài liệu
    • tổng $. Toán tử này trả về tổng của tất cả các trường số

C) Ví dụ khái niệm. Sử dụng MongoDB Groupby Aggregation

Để hiểu hoạt động của phương thức MongoDB Groupby Aggregation, hãy tạo một mẫu có tên sales với dữ liệu sau


db.sales.insertMany([
  { "_id" : 1, "item" : "abc", "price" : NumberDecimal("10"), "quantity" : NumberInt("2"), "date" : ISODate("2014-03-01T08:00:00Z") },
  { "_id" : 2, "item" : "jkl", "price" : NumberDecimal("20"), "quantity" : NumberInt("1"), "date" : ISODate("2014-03-01T09:00:00Z") },
  { "_id" : 3, "item" : "xyz", "price" : NumberDecimal("5"), "quantity" : NumberInt( "10"), "date" : ISODate("2014-03-15T09:00:00Z") },
  { "_id" : 4, "item" : "xyz", "price" : NumberDecimal("5"), "quantity" :  NumberInt("20") , "date" : ISODate("2014-04-04T11:21:39.736Z") },
  { "_id" : 5, "item" : "abc", "price" : NumberDecimal("10"), "quantity" : NumberInt("10") , "date" : ISODate("2014-04-04T21:23:13.331Z") },
  { "_id" : 6, "item" : "def", "price" : NumberDecimal("7.5"), "quantity": NumberInt("5" ) , "date" : ISODate("2015-06-04T05:08:13Z") },
  { "_id" : 7, "item" : "def", "price" : NumberDecimal("7.5"), "quantity": NumberInt("10") , "date" : ISODate("2015-09-10T08:43:00Z") },
  { "_id" : 8, "item" : "abc", "price" : NumberDecimal("10"), "quantity" : NumberInt("5" ) , "date" : ISODate("2016-02-06T20:20:13Z") },
])

Bây giờ, giả sử bạn muốn áp dụng chức năng MongoDB Groupby để tính Tổng số tiền bán hàng, Số lượng bán hàng trung bình và Số lượng bán hàng cho mỗi ngày trong năm 2014. Đoạn mã sau sẽ giúp bạn trích xuất thông tin cần thiết

db.sales.aggregate([
  // First Stage
  {
    $match : { "date": { $gte: new ISODate("2014-01-01"), $lt: new ISODate("2015-01-01") } }
  },
  // Second Stage
  {
    $group : {
       _id : { $dateToString: { format: "%Y-%m-%d", date: "$date" } },
       totalSaleAmount: { $sum: { $multiply: [ "$price", "$quantity" ] } },
       averageQuantity: { $avg: "$quantity" },
       count: { $sum: 1 }
    }
  },
  // Third Stage
  {
    $sort : { totalSaleAmount: -1 }
  }
 ])

Ở đâu

  • Bộ lọc $match lọc các tài liệu để chỉ những tài liệu từ năm 2014 được chuyển sang giai đoạn tiếp theo
  • Giai đoạn nhóm $ tổ chức các tài liệu theo Ngày và tính toán Tổng số tiền bán, Số lượng trung bình và Tổng số cho mỗi nhóm
  • Giai đoạn $sort sắp xếp kết quả theo thứ tự giảm dần dựa trên Tổng số tiền bán cho mỗi nhóm

đầu ra

{ "_id" : "2014-04-04", "totalSaleAmount" : NumberDecimal("200"), "averageQuantity" : 15, "count" : 2 }
{ "_id" : "2014-03-15", "totalSaleAmount" : NumberDecimal("50"), "averageQuantity" : 10, "count" : 1 }
{ "_id" : "2014-03-01", "totalSaleAmount" : NumberDecimal("40"), "averageQuantity" : 1.5, "count" : 2 }

Sự kết luận

Bài viết này đã giới thiệu cho các bạn về MongoDB cùng với các tính năng nổi bật mà nó mang lại. Hơn nữa, nó đã giới thiệu cho bạn phương thức MongoDB Groupby Aggregation cùng với các truy vấn mẫu và cú pháp của nó. Khi doanh nghiệp của bạn bắt đầu phát triển, dữ liệu được tạo theo cấp số nhân trên tất cả các ứng dụng SaaS, Cơ sở dữ liệu và các nguồn khác của công ty bạn

Để đáp ứng nhu cầu lưu trữ và xử lý dữ liệu ngày càng tăng này,  bạn cần đầu tư một phần băng thông kỹ thuật của mình để Tích hợp dữ liệu từ tất cả các nguồn, Làm sạch & Chuyển đổi dữ liệu và cuối cùng tải dữ liệu đó vào Kho dữ liệu trên đám mây để có thêm Phân tích kinh doanh. Tất cả những thách thức này có thể được xử lý hiệu quả bằng công cụ ETL dựa trên đám mây như Hevo Data

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

Hevo Data, Đường ống dẫn dữ liệu không mã cung cấp cho bạn giải pháp nhất quán và đáng tin cậy để quản lý truyền dữ liệu giữa nhiều nguồn khác nhau như MongoDB và nhiều Điểm đến mong muốn khác nhau, với một vài cú nhấp chuột. Hevo Data với khả năng tích hợp mạnh mẽ với hơn 100 nguồn (bao gồm hơn 40 nguồn miễn phí) cho phép bạn không chỉ xuất dữ liệu từ các nguồn dữ liệu mong muốn và tải dữ liệu đó đến đích bạn chọn mà còn chuyển đổi và làm phong phú dữ liệu của bạn để phân tích.

Bạn muốn thử Hevo? . Bạn cũng có thể xem giá cạnh tranh nhất sẽ giúp bạn chọn gói phù hợp cho nhu cầu kinh doanh của mình

Chia sẻ với chúng tôi kinh nghiệm của bạn khi tìm hiểu về MongoDB Group By Aggregation Method trong phần bình luận bên dưới

Chúng tôi có thể sử dụng $match trong Find MongoDB không?

Về cơ bản, MongoDB cung cấp các toán tử đối sánh khác nhau như $match và $count, v.v. cho người dùng và chúng tôi có thể sử dụng chúng theo yêu cầu của mình. We can also use a match operator for the aggregation pipeline.

Chúng ta có thể sử dụng $and trong find trong MongoDB không?

Bạn có thể sử dụng toán tử này trong các phương thức như find(), update(), v.v. theo yêu cầu của bạn . Người vận hành này thực hiện đánh giá ngắn mạch. Nếu biểu thức đầu tiên của toán tử $and đánh giá là sai, thì MongoDB sẽ không đánh giá các biểu thức còn lại trong mảng.

Hàm nào chúng ta có thể sử dụng với $Group trong tập hợp?

(3) Mệnh đề GROUP BY chỉ có thể được sử dụng với các hàm tổng hợp như SUM, AVG, COUNT, MAX và MIN .

Trường nào là bắt buộc trong thao tác $Group trong MongoDB?

_id . Trường này là bắt buộc để nhóm. Nếu bạn chỉ định giá trị của trường _id là null hoặc một hằng số, toán tử $group sẽ tính toàn bộ các giá trị tích lũy cho tất cả các tài liệu đầu vào.