MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Morphia MongoDB memeriksa bidang nol dan tidak ada

Dari dokumentasi , Morphia tidak menyimpan nilai Null/Empty (secara default) sehingga kueri

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

tidak akan berfungsi karena tampaknya Anda tidak dapat melakukan kueri pada null, tetapi dapat melakukan kueri untuk nilai tertentu.

Namun, karena Anda hanya dapat melakukan kueri untuk nilai tertentu, Anda dapat menemukan solusi di mana Anda dapat memperbarui createdDate bidang dengan nilai tanggal yang tidak pernah digunakan dalam model Anda. Misalnya, jika Anda menginisialisasi objek Date dengan 0, itu akan disetel ke awal epoch, 1 Januari 1970 00:00:00 UTC. Jam yang Anda dapatkan adalah offset waktu lokal. Sudah cukup jika pembaruan Anda hanya melibatkan modifikasi elemen yang cocok di mongo shell, maka akan terlihat mirip dengan ini:

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

Anda kemudian dapat menggunakan Antarmuka Lancar untuk menanyakan nilai spesifik itu:

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

Akan jauh lebih sederhana ketika mendefinisikan model Anda untuk menyertakan metode prePersist yang memperbarui bidang CreatedDate. Metode ini ditandai dengan @PrePersist anotasi sehingga tanggal diatur pada urutan sebelum disimpan. Anotasi yang setara tersedia untuk @PostPersist , @PreLoad dan @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. Bagaimana cara mengembalikan agregat sub array dengan filter di array paling atas?

  2. Cara membuat sesi di Node.js

  3. cara menambahkan ng-model ke bidang teks input yang dibuat secara dinamis

  4. Ubah jenis bidang di dalam agregasi mongoDB dan apakah $lookup menggunakan indeks pada bidang atau tidak?

  5. Kerangka Agregasi Mongodb | Kelompokkan beberapa nilai?