2016-08-04 15 views
0

Hier war meine last question, und here ist die Lösung, die ich angenommen habe. Aber ich habe ein anderes Problem.Filter und Anzeige von Daten

So möchte ich meine Kategorien anzeigen, aber ich habe auch Unterkategorien innerhalb einer Kategorie.

<ul> 
    {{#each group in groups}} 
     <li class="col-md-2"> 
     <ul> 
      {{#each category in group}} 
      <li class="dropdown-header>{{category.category}}</li> 
      // <li>*Subcategories</li> this is where i want to display it 
      {{/each}} 
     </ul> 
     </li> 
    {{/each}} 
    </ul> 

Dies ist, wie meine Daten

strukturiert ist
var data = [ 
    { category : "Cat1", subcategory : "Scat1" }, 
    { category : "Cat1", subcategory : "Scat2" }, 
    { category : "Cat2", subcategory : "Scat3" }, 
    { category : "Cat2", subcategory : "Scat4" }, 
    { category : "Cat3", subcategory : "Scat1" }, 
    { category : "Cat3", subcategory : "Scat2" }, 
    { category : "Cat4", subcategory : "Scat3" }, 
    { category : "Cat4", subcategory : "Scat4" }, 
    { category : "Cat5", subcategory : "Scat5"}, 
    { category : "Cat6", subcategory : "Scat6"}, 
    { category : "Cat6", subcategory : "Scat7"}, 
    { category : "Cat6", subcategory : "Scat8"}]; 

Sie können eine Kategorie sehen, viele Untergruppen haben kann. Also, wie kann ich die beiden Kategorien angezeigt und Untergruppen, so dass ich nicht bekommen, eine Kategorie zweimal

Antwort

0

Ich glaube, Sie verwenden sollten (sub) Aggregationen hier:

Reines Mongo

db.myData.aggregate([{"$group": {_id: "$category", subcategoriess: { $addToSet: "$subcategory" }}}]); 

gibt Ihnen:

{ "_id" : "cat3", "subcategoriess" : [ "subcat3.2", "subcat3" ] } 
{ "_id" : "cat2", "subcategoriess" : [ "subcat2" ] } 
{ "_id" : "cat1", "subcategoriess" : [ "subcat1.3", "subcat1.2", "subcat1" ]} 

dann können Sie Ihre Ergebnisse iterieren, um die Kategorie zu bekommen (_id), dann iterieren auf Unterkategorien, um die Liste in jeder Kategorie zu erhalten.

Meteor:

var myDataCol = new Mongo.Collection('myData'); 
var pipeline = [ 
    {"$group": {_id: "$category", subcategoriess: { $addToSet: "$subcategory" } }} 
]; 
var result = myDataCol.aggregate(pipeline);