2011-12-05 44 views
2

我有這個下面的SQL,我想知道MongoDB的等價物。什麼是更新SQL的MongoDB相當於更新現有字段值的記錄

update tblName set kwatt = kwatt/3600000 where kwatt is not null. 

注:

我知道我們可以在服務器寫一個JS功能,完成這件事,我想這是從PHP驅動程序做,我不知道我怎麼能做到這一點容易。

請幫忙。

+0

注意,有兩個環節進行更新:1)基於以前的值更新。 2)更新多條記錄。 – Thilo

回答

3

其實你可以既結合findAndModifystored javascript一起做吧..

創建師就像一個存儲功能;

db.system.js.save({_id: "div", 
      value: function (x, y) { return x/y; }}); 

然後在findAndModify之類的東西;

findAndModify({query:{id:1},update:{$set:{id:"div(this.id,5)"}}}); 

它只是想法,我沒有測試它..

Stored Javascript Sample

+0

這很有趣。我會測試並回復你。 –

+1

雖然沒有直接的方式在PHP中運行'findAndModify()',但它仍然可以從'$ db-> command()'得到。 –

+0

你說得對,在PHP中運行findAndMofigy的唯一方法是$ db-> command() –

1

您不能在一個數據庫操作中執行此操作。您需要先查詢相關的行,然後對每行執行一次額外的更新操作。 不可能使用一個數據庫操作中結果行的值更新文檔的值。其餘的由你自己決定,直截了當。

+0

不是我期望的答案,但看起來像沒有?有一些希望,仍然在尋找它:D –

+0

查看[更新的MongoDB文檔](http://www.mongodb.org/display/DOCS/Updating)它看起來像這樣應該是可能的使用修改器操作。不過,我目前無法測試這個... – jlundqvist