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

Morphia MongoDB kiểm tra trường rỗng và không tồn tại

Từ tài liệu , Morphia không lưu trữ các giá trị Null / Empty (theo mặc định) nên truy vấn

query.and(
    query.criteria("createdDate").exists(),
    query.criteria("createdDate").notEqual(null)
);

sẽ không hoạt động vì có vẻ như bạn không thể truy vấn trên null, nhưng có thể truy vấn một giá trị cụ thể.

Tuy nhiên, vì bạn chỉ có thể truy vấn một giá trị cụ thể, nên bạn có thể đưa ra giải pháp thay thế để cập nhật createdDate trường có giá trị ngày không bao giờ được sử dụng trong mô hình của bạn. Ví dụ:nếu bạn khởi tạo đối tượng Date bằng 0, nó sẽ được đặt thành đầu kỷ nguyên, ngày 1 tháng 1 năm 1970 00:00:00 UTC. Giờ bạn nhận được là khoảng thời gian đã được bản địa hóa. Sẽ là đủ nếu bản cập nhật của bạn chỉ liên quan đến việc sửa đổi (các) phần tử phù hợp trong mongo shell, do đó nó sẽ trông tương tự như sau:

db.users.update(
    {"createdDate": null }, 
    { "$set": {"createdDate": new Date(0)} }
)

Sau đó, bạn có thể sử dụng Giao diện Fluent để truy vấn về giá trị cụ thể đó:

Query<User> query = mongoDataStore
    .find(User.class)    
    .field("createdDate").exists()
    .field("createdDate").hasThisOne(new Date(0));

Sẽ đơn giản hơn nhiều khi xác định mô hình của bạn để bao gồm một phương thức đăng ký trước cập nhật trường Ngày tạo. Phương thức được gắn thẻ với @PrePersist chú thích để ngày được đặt theo thứ tự trước khi nó được lưu. Các chú thích tương đương tồn tại cho @PostPersist , @PreLoad@PostLoad .

@Entity(value="users", noClassNameStored = true)
public class User {

    // Properties
    private Date createdDate;

    ...
    // Getters and setters
    ..

    @PrePersist
    public void prePersist() {
        this.createdDate = (createdDate == null) ? new Date() : createdDate;
    }
}


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Gọi hàm được lưu trữ Mongodb từ PHP7

  2. Phân trang Nodejs

  3. Sự cố khi cài đặt Mongodb trên Ubuntu 20.04

  4. Sắp xếp trong MongoDB theo elemMatch

  5. Đối số phải là một chuỗi trong nodejs