我可以将逗号分隔值字符串拆分为聚合管道中的数组吗?

时间:2015-07-17 08:46:53

标签: mongodb mongodb-query aggregation-framework

我有这样的数据:

{tags: "a, b, c", ...}

是否可以创建一个将其拆分为数组的管道阶段,如下所示:

{tags: ["a", "b", "c"], ...}

准备放松?

如果做不到,那么最好的方法是什么?由于遗留原因,我宁愿保持原始数据不变。

1 个答案:

答案 0 :(得分:3)

聚合框架目前缺乏运营商这样做。 JIRA问题SERVER-6773引发了对$split运营商的需求。

现在,您只能使用mapReduce执行此操作。类似的东西:

db.collection.mapReduce(
    function() {
        this.tags.split(",").forEach(function(tag) {
            emit(tag,someData);
        });
    },
    function(key,results) {
        // do something with the many results
    },
    { "out": { "inline": 1 } }
)

或者其他什么。

简而言之,JavaScript .split()就是能够在MongoDB服务器查询中分隔分隔的字符串。因此,您只能使用支持JavaScript处理的流程。