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

मोंगोडब में ऑटो गणना क्षेत्र

MongoDB वह नहीं बना सकता जो आप 1 प्रश्न के साथ पूछ रहे हैं। लेकिन आप इसे दो-चरणीय क्वेरी में बना सकते हैं।

सबसे पहले, नए मान को ऐरे में पुश करें:

db.Test3.findOneAndUpdate(
{_id: ObjectId("58047d0cd63cf401292fe0ad")},
{$push: {"items":  {"date": ISODate("2013-01-27T16:38:16.163+0000")}}},
{returnNewDocument: true},
function (err, result) {

}
);

फिर "lastDate" को तभी अपडेट करें जब आखिरी पुश से कम हो।

  db.Test3.findOneAndUpdate (
   {_id: ObjectId("58047d0cd63cf401292fe0ad"), "lastDate":{$lt: ISODate("2013-01-25T16:38:16.163+0000")}},
   {$set: {"lastDate": ISODate("2013-01-25T16:38:16.163+0000")}},
   {returnNewDocument: true},
   function (err, result) {
   }
  ); 

दौड़ की स्थिति से बचने के लिए दूसरा पैरामीटर "lastDate" आवश्यक है। इस तरह आप सुनिश्चित हो सकते हैं कि "lastDate" के अंदर निश्चित रूप से "उच्चतम तिथि पुश" है।

आप जिस दूसरी समस्या के लिए पूछ रहे हैं उससे संबंधित एक समान रणनीति का पालन कर सकते हैं। अपडेट करें {"allAre": false} केवल अगर {"_id":yourID, "items.is":false)} . मूल रूप से केवल "झूठा" सेट करें यदि कुछ बच्चे का मान 'झूठा' है। अगर आपको इस संपत्ति के साथ कोई दस्तावेज़ नहीं मिला तो कुछ भी अपडेट न करें।

// add a new Child to false
db.Test4.findOneAndUpdate(
{_id: ObjectId("5804813ed63cf401292fe0b0")},
{$push: {"items":  {"is": false}}},
{returnNewDocument: true},
 function (err, result) {

}
);

// update allAre to false if some child is false
db.Test4.findOneAndUpdate (
   {_id: ObjectId("5804813ed63cf401292fe0b0"), "items.is": false},
   {$set: {"allAre": false}},
   {returnNewDocument: true},
   function (err, result) {
   }
  ); 



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. बाइनरी और अन्य डेटा का उपयोग करके एक छवि पोस्ट करें

  2. मोंगो कनेक्शन पूलिंग (कनेक्शन पूल का आकार बदलना)

  3. कई दस्तावेज़ों को मोंगोडब डेटाबेस में जोड़े जाने से कैसे रोकें

  4. ढूंढें ({}) एक खाली सरणी नेवला देता है

  5. मोंगो खोल में सभी डेटाबेस कैसे सूचीबद्ध करें?