Toán tử MongoDB $Max

Toan Tu Mongodb Max



MongoDB đã đưa ra nhiều toán tử để thực hiện các giao dịch có mục đích đặc biệt như cập nhật bản ghi, thêm bản ghi mới và hiển thị bản ghi trong một điều kiện nhất định. Một trong những toán tử đó là toán tử “$max” được sử dụng để kiểm tra giá trị lớn nhất trong bản ghi. Ngoài ra, chúng ta có thể sử dụng nó để cập nhật giá trị nhỏ nhất với giá trị lớn nhất mới sau khi so sánh chúng trong hướng dẫn chức năng “cập nhật”. Cách sử dụng khác của toán tử “$max” là nhóm và hiển thị các bản ghi của một bộ sưu tập nhất định theo cách nó chỉ có thể hiển thị giá trị lớn nhất trong khi bỏ qua giá trị nhỏ nhất khi có một số bản ghi trùng lặp trong cơ sở dữ liệu. Trong hướng dẫn này, chúng tôi sẽ sử dụng các ví dụ truy vấn đơn giản để thảo luận về cách sử dụng toán tử “$max” đã đề cập trước đó trong tiện ích dòng lệnh MongoDB trong nền tảng Windows của chúng tôi.

Ví dụ 1:

Bắt đầu với hình minh họa để thảo luận và cách toán tử “$max” hoạt động trong trình bao MongoDB, chúng ta cần có một bộ sưu tập có tên “data” phải được tạo sẵn. Để tạo bộ sưu tập này, chúng ta phải thêm trực tiếp một số bản ghi vào bộ sưu tập đó mà không cần sử dụng bất kỳ lệnh “tạo” nào. Lệnh chèn là đủ để tạo một bộ sưu tập và thêm các bản ghi trong đó. Chúng tôi sử dụng hàm “insertMany” trong truy vấn để thêm bốn bản ghi, mỗi bản ghi có 4 trường thuộc các loại khác nhau.

kiểm tra > db.data.insertMany ( [ { 'Tôi' : một , 'Tên' : 'Hoan hô' , 'Lương' : 65000 , 'Tuổi' : 44 } ,
... { 'Tôi' : 2 , 'Tên' : 'Stephen' , 'Lương' : 77000 , 'Tuổi' : 55 } ,
... { 'Tôi' : 3 , 'Tên' : 'Maria' , 'Lương' : 42000 , 'Tuổi' : 27 } ,
... { 'Tôi' : 4 , 'Tên' : 'Hawkin' , 'Lương' : 58000 , 'Tuổi' : 33 } ] )







Lệnh chèn thành công và thông báo đầu ra cho biết các bản ghi đã được thêm vào.



Sau khi chèn các bản ghi vào bộ sưu tập “dữ liệu” của MongoDB, đã đến lúc xem các bản ghi đó trên trình bao. Do đó, chúng tôi chạy hướng dẫn hàm “find()” trên MongoDB Cli, sau đó là hàm “forEach()”, lấy đối số printjson để hiển thị kết quả ở định dạng JSON. Kết quả được hiển thị trong trình bao hiển thị tổng cộng 4 tài liệu trong bộ sưu tập được hiển thị trong hình ảnh đầu ra sau:



kiểm tra > db.data.find ( ) .cho mỗi ( injson )





Hãy thử toán tử “$max” trong lệnh cập nhật của MongoDB để sửa đổi các bản ghi đã được chèn. Do đó, updateOne() được sử dụng ở đây để chỉ sửa đổi một bản ghi duy nhất của bộ sưu tập “dữ liệu” giống như một bản ghi cụ thể trong đó trường “id” có giá trị là “2”. Toán tử “$max” được áp dụng cho trường “Salary” của bộ sưu tập “dữ liệu” để kiểm tra xem trường “Salary” có giá trị lớn hơn 55000 hay không. Nếu không, hãy cập nhật bản ghi với 55000. Kết quả đầu ra cho điều này updateOne() truy vấn hàm hiển thị số lần sửa đổi “0” là bản ghi “2” có giá trị tiền lương nhỏ hơn 55000.

kiểm tra > db.data.updateOne ( { Tôi: 2 } , { tối đa $ : { Lương: 55000 } } )



Sau bản cập nhật này, chúng tôi thử truy vấn hàm “find()” tương tự để hiển thị kết quả đã sửa đổi trên trình bao dòng lệnh MongoDB. Nhưng chúng tôi nhận được cùng một đầu ra mà chúng tôi đã nhận được trước khi sử dụng hướng dẫn 'cập nhật'. Không có thay đổi vì giá trị 77000 lớn hơn 55000.

kiểm tra > db.data.find ( ) .cho mỗi ( injson )

Hãy thử lại truy vấn updateOne() tương tự một lần nữa với một chút sửa đổi. Lần này, chúng tôi thử giá trị lớn hơn là “85000” so với giá trị “77000” đã có trong trường “Lương” của bộ sưu tập “dữ liệu” để tạo sự khác biệt trong đầu ra của chúng tôi. Đầu ra hiển thị số lần sửa đổi “1” lần này vì giá trị “85000” thay thế giá trị “77000” đã tồn tại trong trường sau khi so sánh xảy ra chỉ vì toán tử “$max” trong truy vấn này.

kiểm tra > db.data.updateOne ( { Tôi: 2 } , { tối đa $ : { Lương: 85000 } } )

Sau khi thay thế thành công giá trị nhỏ hơn là “77000” bằng giá trị mới là “85000” thông qua toán tử “$max” của MongoDB, cuối cùng chúng ta cũng sử dụng hàm “find()” trong hướng dẫn “db” để kiểm tra bản cập nhật này, cập nhật thành công hay không. Đầu ra cho thấy rằng giá trị trong trường “Lương” của bản ghi thứ 2 trong bộ sưu tập này được cập nhật hoàn hảo.

kiểm tra > db.data.find ( ) .cho mỗi ( injson )

Ví dụ 2:

Hãy chuyển sang một ví dụ khác để sử dụng toán tử “$max” trong MongoDB. Lần này, chúng tôi loại bỏ toán tử “$max” để nhóm và hiển thị các bản ghi duy nhất của một bộ sưu tập nếu có bất kỳ bản sao nào cho các giá trị trường giống nhau. Đối với điều này, chúng tôi chèn thêm 2 bản ghi vào bộ sưu tập 'dữ liệu' của cơ sở dữ liệu 'thử nghiệm'. Các bản ghi này chứa 2 giá trị giống nhau trong trường “Tên” cũng nằm trong 4 bản ghi đã được chèn và các bản ghi còn lại khác nhau. Để chèn các bản ghi, chúng tôi sử dụng cùng một hướng dẫn “db” có chứa chức năng “insertMany” trong đó để bộ sưu tập “dữ liệu” được cập nhật.

kiểm tra > db.data.insertMany ( [ { 'Tôi' : 5 , 'Tên' : 'Hoan hô' , 'Lương' : 35000 , 'Tuổi' : Bốn năm } ,
{ 'Tôi' : 6 , 'Tên' : 'Hawkin' , 'Lương' : 67000 , 'Tuổi' : 33 } ] )

Lệnh được thực hiện thành công.

Giờ đây, 2 bản ghi mới đã được thêm vào, bạn cũng có thể hiển thị chúng bằng cách sử dụng cùng chức năng “tìm” trong lệnh “db”, theo sau là chức năng “forEach”. Đầu ra hiển thị sau đây trong hình ảnh hiển thị 2 bản ghi mới ở cuối bộ sưu tập này:

kiểm tra > db.data.find ( ) .cho mỗi ( injson )

Sau khi hiển thị 6 bản ghi của bộ sưu tập “dữ liệu”, chúng tôi đã sẵn sàng để thực hiện chức năng tổng hợp trên đó. Do đó, chức năng 'tổng hợp' được sử dụng trong truy vấn được liệt kê sau đây. Với chức năng này, chúng tôi sử dụng toán tử “$group” để nhóm bản ghi của bộ sưu tập “dữ liệu” theo các tên duy nhất của trường “id” và trường “Salary”. Toán tử “$max” được áp dụng cho trường “Lương” của bản ghi để hiển thị giá trị tối đa. Lấy giá trị lớn nhất từ ​​trường Lương” theo các tên trùng lặp trong trường “Tên” được sử dụng làm “id” để hiển thị nhóm này. Tổng cộng có 4 bản ghi được hiển thị. Giá trị nhỏ nhất (từ các bản ghi trùng lặp) bị bỏ qua trong khi giá trị lớn nhất được hiển thị.

db.data.aggregate ( [ { nhóm $ : { _Tôi: ' $Name ' , Lương: { tối đa $ : ' $Lương ' } } } ] )

Phần kết luận

Đoạn đầu tiên của hướng dẫn này giúp bạn hiểu tầm quan trọng của các toán tử được sử dụng trong MongoDB, đặc biệt là toán tử “$max” và việc sử dụng nó trong trình bao MongoDB. Hướng dẫn này chứa hai ví dụ dựa trên lệnh có liên quan đến toán tử “$max” để chứng minh mục đích của nó. Xem qua các hình minh họa MongoDB, bạn sẽ có thể thực hiện một số giao dịch hữu ích trong cơ sở dữ liệu, cho dù đó là thay thế một bản ghi đã tồn tại bằng một giá trị mới hay hiển thị các bản ghi bằng cách nhóm chúng thông qua toán tử “$max”.