【问题标题】:Create tags object from array in mongo collection for Select2 options从 mongo 集合中的数组为 Select2 选项创建标签对象
【发布时间】:2015-09-27 14:11:25
【问题描述】:

我有一个 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;
        }
      }

【问题讨论】:

    标签: javascript mongodb meteor


    【解决方案1】:

    你可以试试这样的聚合管道

    db.colleaction.aggregate([{$project:{_id:0,tags:1}},{$unwind:"$tags"},{$project:{"value":"$tags","标签":"$tags"}}])

    【讨论】:

      【解决方案2】:

      更新。我一发布就意识到我只需要添加一个内部循环。它丑陋,但它有效。

      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;
              }
      

      【讨论】:

        猜你喜欢
        • 2021-06-26
        • 2021-02-25
        • 1970-01-01
        • 1970-01-01
        • 2016-12-22
        • 1970-01-01
        • 1970-01-01
        • 2017-03-15
        • 2020-03-25
        相关资源
        最近更新 更多