MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

MongoDB $ min

MongoDB có $min toán tử cho phép bạn cập nhật giá trị của trường chỉ khi giá trị được chỉ định nhỏ hơn giá trị hiện tại của trường.

Nói cách khác, nếu $min giá trị nhỏ hơn giá trị hiện tại trong tài liệu, $min giá trị được sử dụng. Nếu không, giá trị của tài liệu vẫn không thay đổi.

Ví dụ

Giả sử chúng ta có một bộ sưu tập có tên là golf với tài liệu sau:

{ "_id" : 1, "strokes" : 70 } 

Và hãy tưởng tượng rằng chúng tôi cập nhật tài liệu sau mỗi trận đấu golf với tỷ số mới nhất. Trong trường hợp này, chúng tôi chỉ muốn các strokes trường sẽ được cập nhật nếu điểm mới nhất của chúng tôi là thấp hơn so với điểm số trước đó của chúng tôi.

Trong trường hợp này, chúng tôi có thể sử dụng $min để đạt được kết quả đó.

Ví dụ:

db.golf.update( 
  { _id: 1 }, 
  { $min: { strokes: 64 } } 
)

Đầu ra:

WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

Thông báo này cho chúng tôi biết rằng một tài liệu đã khớp và đã được cập nhật.

Hãy kiểm tra lại bộ sưu tập.

db.golf.find()

Kết quả:

{ "_id" : 1, "strokes" : 64 }

Chúng ta có thể thấy rằng các strokes trường đã được cập nhật với giá trị mới. Điều này là do 64 thấp hơn giá trị trước đó của nó là 70.

Khi giá trị cao hơn

Khi giá trị được chỉ định bằng $min cao hơn giá trị hiện có trong tài liệu, không có gì được cập nhật.

Ví dụ:

db.golf.update( 
  { _id: 1 }, 
  { $min: { strokes: 72 } } 
)

Đầu ra:

WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 0 })

Chúng tôi có thể thấy thông báo rằng không có gì được cập nhật.

Hãy kiểm tra lại bộ sưu tập.

db.golf.find()

Kết quả:

{ "_id" : 1, "strokes" : 64 }

Chúng tôi có thể thấy rằng giá trị vẫn ở mức 64, mặc dù chúng tôi đã cố gắng cập nhật nó lên 72. Điều này được mong đợi, vì chúng tôi đã sử dụng $min .

Ngày

Bạn có thể sử dụng $min trên các trường ngày tháng.

Giả sử chúng ta có collection được gọi là loài với tài liệu sau:

{ "_id" : 1, "firstDiscovered" : ISODate("2000-01-01T00:00:00Z") } 

Hãy cố gắng cập nhật ngày với một ngày muộn hơn ngày hiện tại trong tài liệu.

db.species.update( 
  { _id: 1 }, 
  { $min: { firstDiscovered: new Date("2001-01-01") } } 
)

Ở đây, chúng tôi cố gắng cập nhật năm từ 2000 đến 2001 . Do ngày mới muộn hơn ngày hiện tại, chúng tôi nhận được thông tin sau:

WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 0 })

Không có gì được cập nhật.

Hãy kiểm tra bộ sưu tập:

db.species.find()

Kết quả:

{ "_id" : 1, "firstDiscovered" : ISODate("2000-01-01T00:00:00Z") } 

Như mong đợi, vẫn giữ nguyên giá trị ngày tháng.

Bây giờ chúng ta hãy thử cập nhật nó với một ngày sớm hơn.

db.species.update( 
  { _id: 1 }, 
  { $min: { firstDiscovered: new Date("1999-01-01") } } 
)

Đầu ra:

WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

Chúng ta có thể thấy thông báo rằng tài liệu đã được cập nhật.

Hãy kiểm tra.

db.species.find()

Kết quả:

{ "_id" : 1, "firstDiscovered" : ISODate("1999-01-01T00:00:00Z") } 

Ngày đã được cập nhật như dự kiến.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Xóa mọi thứ trong cơ sở dữ liệu MongoDB

  2. Cập nhật nhiều phần tử trong một mảng trong mongodb

  3. Hiểu các tùy chọn sao lưu MongoDB

  4. MongoDB có giao diện REST gốc không?

  5. Truy vấn Mongodb dựa trên mục ở vị trí cụ thể trong mảng