我有一个mongo集合,其中包含一个名为' tags'的数组字段。我想要做的是创建一个单独的对象,它存储带有标签和值的所有各种标签。最终结果应该是我可以在Meteor应用程序的Select2字段中使用的对象来创建结果选项。我已经接近了,但我的所有解决方案都没有用,而且非常难看(读:不是功能性的javascript)
以下是一份示例文件:
{
"_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;
}
}
答案 0 :(得分:2)
你可以尝试像这样的聚合管道
db.colleaction.aggregate([{$项目:{_ ID:0,标签:1}},{$展开:" $标签"},{$项目:{"值#34;:" $标签""拉布勒":" $标签"}}])
答案 1 :(得分: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;
}