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

MongoDB, एकाधिक गिनती ($ मौजूद के साथ)

आपके पास सही मूल विचार था लेकिन $exists एक क्वेरी शर्त है इसलिए केवल $match . आप जो चाहते हैं वह है $ifNull ऑपरेटर अनिवार्य रूप से एक ही काम करने के लिए:

db.mycollection.aggregate( [
    { "$group": {
        "_id" : { "user_id": "$user_id" },
        "requestA_count": { "$sum": {
            "$cond": [ { "$ifNull": ["$requestA", false] }, 1, 0 ]
        } },
        "requestB_count": { "$sum": {
            "$cond": [ { "$ifNull": ["$requestB", false] }, 1, 0 ]
        } },
        "requestC_count": { "$sum": {
            "$cond": [ { "$ifNull": ["$requestC", false] }, 1, 0 ]
        } },
    } },
    { "$project": {
        "_id": 0,
        "user_id": "$_id.user_id",
        "requestA_count": 1,
        "requestB_count": 1,
        "requestC_count": 1
    } }
] );

तो $ifNull या तो फ़ील्ड का वर्तमान मान लौटाता है यदि यह मौजूद है या "दाईं ओर" तर्क वापस किया जाता है यदि ऐसा नहीं होता है। false . के अलावा लौटाया गया मान true . के रूप में व्याख्या की जाती है (जब तक कि मूल्य वास्तव में गलत न हो)।

अनिवार्य रूप से यह आपको दस्तावेज़ में किसी संपत्ति के अस्तित्व के लिए तार्किक रूप से परीक्षण करने की समान कार्यक्षमता प्रदान करता है।




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. mongo/नोड TypeError:कॉलबैक क्वेरी पर कोई फ़ंक्शन नहीं है

  2. कई डेटा स्रोतों के साथ उपयोग के लिए स्प्रिंग डेटा रिपॉजिटरी बीन नामों को अनुकूलित करना

  3. MongoDB SSPL लाइसेंस परिवर्तन अद्यतन

  4. mongodb - नेस्टेड उप-दस्तावेज़ों को खोलना;

  5. नेस्टेड संरचना में CSV पढ़ने के लिए mongoimport का उपयोग करना?