Addtoset mongodb

Bạn có thể sử dụng các khung tổng hợp cho nhóm theo ngày trong MongoDB. Trước tiên chúng ta hãy tạo một bộ sưu tập với một số tài liệu. Truy vấn để tạo một bộ sưu tập với các tài liệu như sau

Nội dung chính Hiển thị

> db.groupByDateDemo.insertOne({"UserLoginDateTime":new ISODate()});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c6ee4df6fd07954a4890695")
}
> db.groupByDateDemo.insertOne({"UserLoginDateTime":new ISODate("2019-01-31
15:20:09.234Z")});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c6ee51c6fd07954a4890696")
}
> db.groupByDateDemo.insertOne({"UserLoginDateTime":new ISODate("2017-04-21
16:12:13.240Z")});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c6ee5336fd07954a4890697")
}
> db.groupByDateDemo.insertOne({"UserLoginDateTime":new ISODate("2016-05-25
19:11:21.130Z")});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c6ee54b6fd07954a4890698")
}
> db.groupByDateDemo.insertOne({"UserLoginDateTime":new ISODate("2016-05-25
19:11:21.130Z")});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c6ee8de6fd07954a4890699")
}
> db.groupByDateDemo.insertOne({"UserLoginDateTime":new ISODate()});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c6ee8e76fd07954a489069a")
}

Hiển thị tất cả các tài liệu từ một bộ sưu tập với sự trợ giúp của phương thức find(). Truy vấn như sau

> db.groupByDateDemo.find().pretty();

Sau đây là đầu ra

{
   "_id" : ObjectId("5c6ee4df6fd07954a4890695"),
   "UserLoginDateTime" : ISODate("2019-02-21T17:50:23.076Z")
}
{
   "_id" : ObjectId("5c6ee51c6fd07954a4890696"),
   "UserLoginDateTime" : ISODate("2019-01-31T15:20:09.234Z")
}
{
   "_id" : ObjectId("5c6ee5336fd07954a4890697"),
   "UserLoginDateTime" : ISODate("2017-04-21T16:12:13.240Z")
}
{
   "_id" : ObjectId("5c6ee54b6fd07954a4890698"),
   "UserLoginDateTime" : ISODate("2016-05-25T19:11:21.130Z")
}
{
   "_id" : ObjectId("5c6ee8de6fd07954a4890699"),
   "UserLoginDateTime" : ISODate("2016-05-25T19:11:21.130Z")
}
{
   "_id" : ObjectId("5c6ee8e76fd07954a489069a"),
   "UserLoginDateTime" : ISODate("2019-02-21T18:07:35.208Z")
}

Đây là truy vấn cho nhóm theo ngày trong MongoDB

> db.groupByDateDemo.aggregate([
. { $group: {
. _id: {
. $add: [
. { $dayOfYear: "$UserLoginDateTime"},
. { $multiply:
. [400, {$year: "$UserLoginDateTime"}]
. }
. ]},
. NumberOfTimes: { $sum: 1 },
. f: {$min: "$UserLoginDateTime"}
. }
. },
. { $sort: {_id: 1} },
. { $limit: 10 },
. { $project: { date: "$f", NumberOfTimes: 1, _id: 0} }
. ]);

Sau đây là đầu ra

{ "NumberOfTimes" : 2, "date" : ISODate("2016-05-25T19:11:21.130Z") }
{ "NumberOfTimes" : 1, "date" : ISODate("2017-04-21T16:12:13.240Z") }
{ "NumberOfTimes" : 1, "date" : ISODate("2019-01-31T15:20:09.234Z") }
{ "NumberOfTimes" : 2, "date" : ISODate("2019-02-21T17:50:23.076Z") }


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 đồ để 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 anh chàng hướng đến 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

Nhóm đếm MongoDB theo ngày

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ơ đồ cơ sở dữ liệu ít hơn. Sơ lược cơ sở dữ liệu 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 tập tin 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 tài liệu thiết yếu nhất 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 thiết 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 mở rộng khả nă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 cách 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 năng sẵn có 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ể lấy được từ mộ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ã hóa 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 . 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ó chắc chắn rằng dữ liệu của bạn là an toàn và nhất quán. Hevo cung cấp cho bạn một giải pháp 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à 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 đổi.  
  • Real time. Hevo cung cấp dữ liệu chuyển đổi 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
  • Lược đồ quản lý. 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
  • connection. 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, quán triệt nhất 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 tốc độ rất thấp.
  • 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í trong 14 ngày

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

Nhóm đếm MongoDB theo ngày

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: <expression>, <field1>: { <accumulator1> : <expression1> }, <accumulator2> : <expression2>, <accumulator3> : <expression3> } }...<accumulatorN> : <expressionN> } } }

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 đã được định sẵn. Tập hợp này tạo ra trường _id, chứa nhóm theo từ 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 tích lũy
  • _Tôi. Đây là trường bắt buộc của MongoDB Groupby 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
  • quy định. Bộ tích lũy là các toán tử trong MongoDB Groupby duy trì trạng thái của họ (e. g. , tổng, tối đa 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. A 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 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ố. Thisaltomat 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 $. Elemental 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
    • tiền $. 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 $. Số tiền này được 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 bán hàng 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 }
  }
 ])

at where

  • 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

________số 8

Phần 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ổng 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ất cả những thức thức này đều 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ữ liệu không mã cung cấp cho bạn giải pháp quán nhất 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, chỉ bằng một cú nhấp chuột. Dữ liệu Hevo 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

Bạn muốn thử Hevo?. Bạn cũng có thể xem giá Cạnh tranh tốt nhất sẽ giúp bạn lựa chọn các gói phù hợp với 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

Làm cách nào để sử dụng số lượng trong nhóm trong MongoDB?

Chúng ta có thể sử dụng đoạn mã sau để nhóm theo trường 'vị trí' và đếm số lần xuất hiện của từng vị trí.