2016-01-10 2 views
1

Я использую Meteorjs и Монго У меня есть коллекция структуры, как это:как использовать агрегацию MongoDB с метеором

{ 
    "_id" : "LxMaZhRX7ZbAkiFqF", 
    "categorie" : "International matches", 
    "division" : [ 
      { 
        "nameDivision" : "div 1", 
        "type" : "Championat" 
      }, 
      { 
        "nameDivision" : "div 2", 
        "type" : "Coupe" 
      }, 
      { 
        "nameDivision" : "div 3", 
        "type" : "Championat" 
      }, 
      { 
        "nameDivision" : "div 4", 
        "type" : "Championat" 
      } 
    ] 
    } 

Я хочу, чтобы этот результат в моей подписке:

{ 
    "_id" : "LxMaZhRX7ZbAkiFqF", 
    "categorie" : "International matches", 
    "division" : [ 
      { 
        "type" : "Championat", 
        division:[{ 
         "nameDivision" : "div 1", 
         "nameDivision" : "div 3", 
         "nameDivision" : "div 4", 
        }] 

      }, 
      { 
       "type" : "Coupe", 
        "division":[{ 
        "nameDivision" : "div 2", 
        }] 


      }, 
      { 
    ] 
    } 

мне нужна ваша помощь в том, чтобы использовать эту функцию с MongoDB aggegate группировать элементы спасибо

ответ

2

в Метеоре, вы можете использовать meteorhacks:aggregate package осуществлять агрегацию:

Добавить в приложение с

meteor add meteorhacks:aggregate 

Тогда просто использовать .aggregate функции, как показано ниже.

var coll = new Mongo.Collection('collectionName'); 
var pipeline = [ 
    { "$unwind": "$division" }, 
    { 
     "$group": { 
      "_id": "$division.type", 
      "id": { "$first": "$_id" }, 
      "categorie": { "$first": "$categorie" }, 
      "division": { 
       "$push": { "nameDivision": "$division.nameDivision" } 
      } 
     } 
    }, 
    { 
     "$group": { 
      "_id": "$id",    
      "categorie": { "$first": "$categorie" }, 
      "division": { 
       "$push": { 
        "type": "$_id", 
        "division": "$division" 
       } 
      } 
     } 
    } 
]; 
var result = coll.aggregate(pipeline); 
Смежные вопросы