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

MongoDB में दो दिनांक फ़ील्ड की तुलना करें

आप सामान्य क्वेरी मिलान के साथ किसी अन्य फ़ील्ड के मान के साथ किसी फ़ील्ड की तुलना नहीं कर सकते। हालांकि, आप इसे एकत्रीकरण ढांचे के साथ कर सकते हैं:

db.so.aggregate( [
    { $match: …your normal other query… },
    { $match: { $eq: [ '$modified', '$sync' ] } }
] );

मैंने …आपकी सामान्य अन्य क्वेरी… को वहां रखा है क्योंकि आप उस बिट को इंडेक्स का उपयोग कर सकते हैं। इसलिए यदि आप ऐसा केवल उन दस्तावेज़ों के लिए करना चाहते हैं जहाँ name फ़ील्ड है charles आप यह कर सकते हैं:

db.so.ensureIndex( { name: 1 } );
db.so.aggregate( [
    { $match: { name: 'charles' } },
    { $project: { 
        modified: 1, 
        sync: 1,
        name: 1,
        eq: { $cond: [ { $gt: [ '$modified', '$sync' ] }, 1, 0 ] } 
    } },
    { $match: { eq: 1 } }
] );

इनपुट के साथ:

{ "_id" : ObjectId("520276459bf0f0f3a6e4589c"), "modified" : 73845345, "sync" : 73234 }
{ "_id" : ObjectId("5202764f9bf0f0f3a6e4589d"), "modified" : 4, "sync" : 4 }
{ "_id" : ObjectId("5202765b9bf0f0f3a6e4589e"), "modified" : 4, "sync" : 4, "name" : "charles" }
{ "_id" : ObjectId("5202765e9bf0f0f3a6e4589f"), "modified" : 4, "sync" : 45, "name" : "charles" }
{ "_id" : ObjectId("520276949bf0f0f3a6e458a1"), "modified" : 46, "sync" : 45, "name" : "charles" }

यह रिटर्न:

{
    "result" : [
        {
            "_id" : ObjectId("520276949bf0f0f3a6e458a1"),
            "modified" : 46,
            "sync" : 45,
            "name" : "charles",
            "eq" : 1
        }
    ],
    "ok" : 1
}

यदि आप और फ़ील्ड चाहते हैं, तो आपको उन्हें $project . में जोड़ना होगा ।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. मोंगो:दस्तावेजों के एक सेट में शब्द घटनाओं की संख्या की गणना करें

  2. एक सरणी को सॉर्ट करें और MongoDB में एक रैंक फ़ील्ड जोड़ें

  3. कॉलबैक नरक से बचने के लिए नोडज और मोंगोस्किन के साथ प्रतीक्षा का उपयोग करना

  4. मोंगोडब टाइमस्टैम्प बहुत गलत है - नेवला

  5. अनुक्रमिक क्रम में अंतिम 5 दस्तावेज़ कैसे प्राप्त करें?