替换文档中的数组值

时间:2014-09-30 07:59:41

标签: mongodb aggregation-framework

我有一个看起来像这样的集合:

{
    paymentType: [1,2]     
}

使用聚合框架,我正在寻找一种用某些字符串替换值的方法,例如1 = A,2 = B,以便最终结果看起来像:

{
    paymentType: ['A','B']
}

我也在使用mongodb 2.4。

请帮忙, 谢谢!

1 个答案:

答案 0 :(得分:0)

聚合框架永远不会改变集合的行为。聚合管道生成新文档(通常是临时的,只是通过管道输出到客户端)。最简单的方法是抓取每个文档并替换值,然后更新字段。这里有一些包含所有基本想法的代码:

> db.stuff.find({}, { "_id" : 1, "paymentType" : 1 }).forEach(function(doc) {
    var new_paymentType = []
    doc.paymentType.forEach(function(val) {
        if (val === 1) new_paymentType.push("A")
        if (val === 2) new_paymentType.push("B")
    })
    db.stuff.update({ "_id" : doc._id }, { "$set" : { "paymentType" : new_paymentType } })
})