MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Morphia MongoDB проверява за празно и несъществуващо поле

От документация , Morphia не съхранява стойности Null/Empty (по подразбиране), така че заявката

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

няма да работи, тъй като изглежда, че не можете да правите заявки за null, но можете да правите заявки за конкретна стойност.

Въпреки това, тъй като можете да правите заявки само за конкретна стойност, можете да измислите заобиколно решение, при което можете да актуализирате createdDate поле със стойност на дата, която никога не се използва във вашия модел. Например, ако инициализирате обект Date с 0, той ще бъде зададен в началото на епохата, 1 януари 1970 г. 00:00:00 UTC. Часовете, които получавате, са локализираното отместване на времето. Ще бъде достатъчно, ако вашата актуализация включва само модифициране на съвпадащия елемент(и) в mongo shell, следователно ще изглежда подобно на това:

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

След това можете да използвате Fluent Interface за заявка за тази конкретна стойност:

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

Би било много по-лесно, когато дефинирате вашия модел, да включите метод prePersist, който актуализира полето createdDate. Методът е маркиран с @PrePersist анотация, така че датата да бъде зададена в поръчката, преди да бъде запазена. Съществуват еквивалентни анотации за @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. намиране без значение на главни и малки букви в mongodb за потребителски имена в php

  2. mongoengine +django как да преброим броя на елементите с едно и също съдържание

  3. Как да увеличим поле в mongodb?

  4. грешка, докато следвате приложението Tumblelog с Flask и MongoEngine

  5. Добре ли е да се отправят заявки към MongoDB няколко пъти на заявка?