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

मोंगोडब ग्रुप में फील्ड रखते हुए

मेरा मानना ​​है कि यह प्रश्न आप जो पूछ रहे हैं उसका समाधान है:

db.test.aggregate([
  // Filter the docs based on your criteria
  {$match: {
    type1: {$in: ['type1A', 'type1B']},
    type2: {$in: ['type2A', 'type2B']},
    'date.year': 2015,
    'date.month': 4,
    'date.type': 'day',
    'date.day': {$gte: 4, $lte: 7}
  }},

  // Group by iddoc and type1 and count them
  {$group: {
    _id: { iddoc: '$iddoc', type1: '$type1' },
    sum: {$sum: 1},
    type2: { $push: '$type2' },
    year: { $first: '$date.year' },
    month: { $first: '$date.month' },
    day: { $addToSet: '$date.day' }
  }},

  // Sort by sum, descending
  {$sort: {sum: -1}}
])

आप बाकी क्षेत्रों को कैसे देखना चाहते हैं, इसके साथ कुछ विकल्प हैं। मैंने टाइप 2 को एक सरणी (डुप्लिकेट के लिए अनुमति) में धक्का देना चुना, year के लिए पहला मान लें और month चूंकि वे हमेशा आपके मैच ऑपरेशन के अनुसार 2015 और 4 होंगे, और addToSet एक सरणी के लिए दिन (डुप्लिकेट की अनुमति नहीं)। एक अन्य विकल्प पूरे दस्तावेज़ को मैचों की एक सरणी में धकेलना होगा, लेकिन बड़े संग्रह पर इसके साथ सावधान रहना चाहिए।

{$group: {
    _id: { iddoc: '$iddoc', type1: '$type1' },
    sum: {$sum: 1},
    matches: { $push: '$$ROOT' }
  }},



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. ट्रैविस सीआई पर नोड.जेएस (एक्सप्रेस) का उपयोग करके निर्मित आरईएसटी एपीआई का परीक्षण

  2. नेवला के साथ संग्रह के तत्वों को खोजें और गिनें

  3. क्या नेवले का उपयोग करके सीधे उप-दस्तावेजों को क्वेरी करना संभव है?

  4. एसक्यूएल में नंबरों को कैसे प्रारूपित करें

  5. मोंगोडीबी को MySQL निर्यात