我可以将逗号分隔值字符串拆分为聚合管道中的数组吗?
Can I split a comma separated value string into an array in the aggregate pipeline?
我有这样的数据:
{tags: "a, b, c", ...}
是否可以创建一个将其拆分为数组的管道阶段,如下所示:
{tags: ["a", "b", "c"], ...}
准备放松一下?
否则,最好的方法是什么?由于遗留原因,我宁愿保留原始数据不变。
聚合框架目前缺少执行此操作的运算符。存在一个 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处理的进程。
我有这样的数据:
{tags: "a, b, c", ...}
是否可以创建一个将其拆分为数组的管道阶段,如下所示:
{tags: ["a", "b", "c"], ...}
准备放松一下?
否则,最好的方法是什么?由于遗留原因,我宁愿保留原始数据不变。
聚合框架目前缺少执行此操作的运算符。存在一个 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处理的进程。