MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

Morphia MongoDB अशक्त और गैर-मौजूदा फ़ील्ड के लिए जाँच करें

दस्तावेज़ीकरण से , मॉर्फिया नल/खाली मानों को संग्रहीत नहीं करता है (डिफ़ॉल्ट रूप से) इसलिए क्वेरी

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

काम नहीं करेगा क्योंकि ऐसा लगता है कि आप नल पर क्वेरी करने में सक्षम नहीं हैं, लेकिन एक विशिष्ट मान के लिए क्वेरी कर सकते हैं।

हालाँकि, चूंकि आप केवल एक विशिष्ट मान के लिए क्वेरी कर सकते हैं, आप एक वैकल्पिक हल तैयार कर सकते हैं जहाँ आप createdDate को अपडेट कर सकते हैं। दिनांक मान वाला फ़ील्ड जिसका उपयोग आपके मॉडल में कभी नहीं किया जाता है। उदाहरण के लिए, यदि आप दिनांक ऑब्जेक्ट को 0 से प्रारंभ करते हैं, तो इसे युग की शुरुआत, 1 जनवरी 1970 00:00:00 UTC पर सेट किया जाएगा। आपको मिलने वाले घंटे स्थानीयकृत समय ऑफसेट हैं। यह पर्याप्त होगा यदि आपके अपडेट में केवल मोंगो शेल में मेल खाने वाले तत्वों को संशोधित करना शामिल है, इसलिए यह इसी तरह दिखाई देगा:

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

फिर आप फ्लुएंट इंटरफ़ेस का उपयोग कर सकते हैं उस विशिष्ट मूल्य पर क्वेरी करने के लिए:

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

अपने मॉडल को परिभाषित करते समय एक प्रीपर्सिस्ट विधि शामिल करना बहुत आसान होगा जो createDate फ़ील्ड को अपडेट करता है। इस विधि को @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. मोंगो संग्रह छोड़ना डिस्क स्थान साफ़ नहीं कर रहा है

  2. मोंगोडब से एचटीएमएल पेज पर छवि फ़ाइलों को कैसे पुनर्प्राप्त करें

  3. उल्का:संग्रह, चर, प्रकाशन और सदस्यता के नामों के बीच अंतर?

  4. Node.js:अपरिभाषित लौटने वाला दस्तावेज़ - नेवला

  5. Node.js में डेटाबेस से संबंधित दौड़ की स्थिति को रोकना