0
我有一個集合看起來是這樣的:一個文檔內替換數組值
{
paymentType: [1,2]
}
使用聚合框架,我正在尋找一種方式來代替某些字符串值,例如1 = A ,2 = B,使最終結果看起來像這樣:
{
paymentType: ['A','B']
}
我也使用mongodb 2.4。
請幫忙, 謝謝!
我有一個集合看起來是這樣的:一個文檔內替換數組值
{
paymentType: [1,2]
}
使用聚合框架,我正在尋找一種方式來代替某些字符串值,例如1 = A ,2 = B,使最終結果看起來像這樣:
{
paymentType: ['A','B']
}
我也使用mongodb 2.4。
請幫忙, 謝謝!
聚合框架永遠不會改變集合的行爲。聚合管道產生新的文檔(通常是臨時的,只是通過管道傳送給客戶端)。最簡單的方法就是抓住每個文檔並替換值,然後更新該字段。這裏有一些代碼,有所有的基本思路:
> 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 } })
})
我試過一些$推和$地圖的組合,但沒有運氣:( – Leo 2014-09-30 11:28:18