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

Cách tìm thời gian thao tác cập nhật / chèn / xóa lần cuối trên bộ sưu tập mongodb mà không có trường objectid

Để tạo một câu chuyện dài ngắn:MongoDB có một linh hoạt lược đồ. Chỉ cần thêm trường ngày. Vì các mục cũ hơn không có nó, chúng không thể là mục cuối cùng.

Hãy gọi trường đó là mtime .

Vì vậy, sau khi thêm trường ngày vào định nghĩa giản đồ của bạn, chúng tôi tạo chỉ mục theo thứ tự giảm dần trên trường mới:

db.yourCollction.createIndex({mtime:-1})

Giờ đây, việc tìm kiếm thời gian cuối cùng cho một bộ sưu tập thật dễ dàng:

db.yourCollection.find({"mtime":{"$exists":true}}).sort({"mtime":-1}).limit(1)

Làm điều này cho mọi bộ sưu tập. Khi truy vấn trên không trả về giá trị trong khung thời gian bạn đã xác định để xóa một bộ sưu tập, chỉ cần loại bỏ nó, vì nó chưa được sửa đổi kể từ khi bạn giới thiệu trường mtime.

Sau khi bộ sưu tập của bạn được dọn dẹp, bạn có thể xóa mtime từ định nghĩa giản đồ của bạn. Để xóa nó khỏi tài liệu, bạn có thể chạy một truy vấn đơn giản:

db.yourCollection.update(
  { "mtime":{ $exists:true} },
  { "$unset":{ "mtime":""} },
  { multi: true}
)


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB:tra cứu đường ống hiệu suất chậm so với tra cứu cơ bản

  2. CẢNH BÁO Lỗi:Mã sao băng phải luôn chạy trong một phương thức gọi Fiber khi trên máy chủ

  3. Mongodb làm thế nào để chèn CHỈ nếu không tồn tại (không cập nhật nếu tồn tại)?

  4. Có thành phần Polymer giúp đơn giản hóa giao tiếp với MongoDB không?

  5. MongoDB:chèn vào bản cập nhật khóa trùng lặp