AddToSet tổng hợp MongoDB
Một số ví dụ về $group và các bộ tích lũy khác nhau (toán tử được sử dụng cùng với $group) như $push, $avg, $sum, $min, $max và $addToSet Show Trong bài đăng này, tôi sẽ thảo luận về $group trong MongoDB Aggregation framework. Tôi sẽ lấy một số ví dụ về $group và các bộ tích lũy khác nhau (toán tử được sử dụng cùng với $group
Dưới đây là một minh họa để hiểu rõ hơn về khái niệm Bạn cũng có thể có các trường được tính toán trong đầu ra Trước tiên hãy lấy một ví dụ đơn giản về nhómGiả sử chúng tôi có cơ sở dữ liệu Trò chơi, nơi chúng tôi có một bộ sưu tập để lưu trữ thông tin người dùng được gọi là người dùng và có một bộ sưu tập khác nơi chúng tôi lưu trữ điểm trò chơi được gọi là game_scores. Chúng tôi đang có tài liệu mẫu sau Bây giờ nếu chúng tôi muốn tìm ra tất cả những người dùng duy nhất đã chơi trò chơi. Làm thế nào chúng ta sẽ làm mã nó? Giải pháp – $groupBạn thấy rằng trong tham số Trên kết quả xuất ra, bạn có thể thấy có 4 người dùng duy nhất đã chơi trò chơi Bây giờ bạn đã hiểu khái niệm cơ bản, hãy chuyển sang bộ tích lũy trong giai đoạn $group Toán tử bộ tích lũy về cơ bản là các hàm được áp dụng cho các trường của tài liệu đầu vào ngoài các trường được “nhóm” trong “_id” Nói cách khác, chỉ những trường mà bạn có thể xuất ra ở dạng Tất cả các phần sau của bài đăng này sẽ cung cấp cho bạn ý tưởng hợp lý về các toán tử tích lũy trong $push Toán tử Hãy tiếp tục với ví dụ trên. Điều gì sẽ xảy ra nếu chúng tôi muốn lấy tất cả điểm của từng người chơi duy nhất trong mảng Bạn thấy rằng điểm số là trường mới, là một mảng có tất cả các trường $avg
Nó bỏ qua các giá trị không phải là số Một ví dụ đơn giảnĐiểm trung bình của mỗi người dùng trong trò chơi là bao nhiêu? Một ví dụ phức tạp nhỏ 🙂Giả sử, chúng tôi muốn lấy điểm trò chơi trung bình của mỗi người dùng trong mỗi Chúng ta làm gì? Chỉ cần thêm Nó không phải là khó khăn 😉 Thông báo Chỉ cần quan sát 3 tài liệu đầu tiên trong hình ảnh này. Bạn thấy trường người dùng được lặp lại với các giá trị gameMode khác nhau. Vì vậy, bây giờ bạn có điểm trung bình ở từng mức độ khó cho mỗi người dùng Tái bút. Tôi đã cắt ngắn đầu ra trong ví dụ này để đơn giản 🙂 $sum
Ví dụ cho $sumGiả sử, chúng tôi muốn tính số lần người dùng đã chơi trong mỗi Khá dễ dàng phải không? . Nhưng tôi muốn chứng minh $min
Ví dụLàm thế nào để tính điểm tối thiểu của mỗi game thủ? $max
Ví dụRất giống với phần trước, làm cách nào để tính điểm cao nhất cho mỗi người chơi trong mỗi $min 0
Đây sẽ không phải là một toán tử rất có ý nghĩa nếu không có giai đoạn Ví dụ Giả sử, chúng tôi muốn tìm ra điểm số đầu tiên của mỗi người chơi trong cơ sở dữ liệu của chúng tôi Chúng tôi sẽ sắp xếp game_scores theo thứ tự tăng dần của trường đã phát. Sau đó, chúng tôi sẽ nhóm theo người dùng và sử dụng toán tử Nếu bạn không sử dụng $sort làm giai đoạn đầu tiên của quy trình, thì $first sẽ không trả về bất kỳ kết quả có ý nghĩa nào $min 6Điều này rất giống với Như bạn có thể đã đoán, Ví dụ, Cách tìm điểm mới nhất của từng người chơi trong cơ sở dữ liệu của chúng tôi Một giải pháp thay thế có thể là sắp xếp hồ sơ dựa trên ngày $addToSet
Về cơ bản, những gì mà Hãy lấy một ví dụ nhanhTừ bộ sưu tập game_score của chúng tôi, nếu chúng tôi cần tìm thì mỗi người dùng đã chơi chế độ trò chơi nào Có thể có một số người dùng chỉ chơi ở chế độ khó, những người khác có thể chỉ chơi ở chế độ dễ và trung bình. Hãy cùng mã tìm hiểu Hãy cho tôi biết nếu bạn vẫn còn nghi ngờ về bất kỳ điều nào trong số này Phần kết luậnTrong bài đăng này, tôi đã thảo luận về một số khái niệm cơ bản xung quanh Hãy liên lạc, sẽ gặp bạn trong bài viết tiếp theo. Mã hóa vui vẻ 🙂 ĐƯỢC VIẾT BỞI Mohit SehgalMuốn tác động tích cực đến thế giới. Nhà phát triển ngăn xếp đầy đủ, Ngăn xếp MEVN (MongoDB, Express. js, vue. js, nút. js) |