我有这样的数据:
{tags: "a, b, c", ...}
是否可以创建一个将其拆分为数组的管道阶段,如下所示:
{tags: ["a", "b", "c"], ...}
准备放松?
如果做不到,那么最好的方法是什么?由于遗留原因,我宁愿保持原始数据不变。
答案 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处理的流程。