2014-09-30 82 views
0

我有一個集合看起來是這樣的:一個文檔內替換數組值

{ 
    paymentType: [1,2]  
} 

使用聚合框架,我正在尋找一種方式來代替某些字符串值,例如1 = A ,2 = B,使最終結果看起來像這樣:

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

我也使用mongodb 2.4。

請幫忙, 謝謝!

+0

我試過一些$推和$地圖的組合,但沒有運氣:( – Leo 2014-09-30 11:28:18

回答

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 } }) 
})