2015-09-27 83 views
1

我有一個名爲'tags'的數組字段的mongo集合。我想要做的是創建一個單獨的對象,其中存儲了具有標籤和值的所有標籤。最終結果應該是我可以在Meteor應用程序的Select2字段中使用的對象來創建結果選項。我已經得到接近,但我所有的解決方案都沒有工作,是超級難看(讀:不是功能的JavaScript)從mongo集合中爲select2選項創建標籤對象

這裏是一個示例文件:

{ 
"_id": "sjkjladlj", 
"title": "Coldplay is Cool", 
"tags": ["music", "yuppie"] 
} 

現在最終的結果,我想的是:

[ 
{ 
value: "music", 
label: "music" 
}, 
{ 
value: "yuppies", 
label: "yuppies" 
}, 
{ 
value: "Some tag from another doc" 
label: "Some tag from another doc" 
} 
] 

任何想法?

這是我收到的最接近的。

options: function() { 
      tagsArray = []; 
      ca = Notes.find({}, {tags: 1}).fetch(); 
      ca.forEach(function(it) { 
      result = {}; 
      result = it.tags; 
      tagsArray.push(result); 
      }); 
      console.log(tagsArray); 
      return tagsArray; 
     } 
     } 

回答

2

你可以用聚合管道這樣

db.colleaction.aggregate([嘗試{$項目:{_ ID:0,標籤:1}},{$開卷:「$標籤「},{$ project:{」value「:」$ tags「,」lable「:」$ tags「}}])

0

更新。只要我發佈,我意識到我只需要添加一個內部循環。它的醜陋,但它的作品。

options: function() { 
      tagsArray = []; 
      ca = Notes.find({}, {tags: 1}).fetch(); 
      ca.forEach(function(it) { 
      result = {}; 
      result = it.tags; 
      result.forEach(function(child){ 
       inner = {}; 
       inner.value = child; 
       inner.label = child; 
       tagsArray.push(inner); 
      }); 
      }); 
      console.log(tagsArray); 
      return tagsArray; 
     }