我有這個下面的SQL,我想知道MongoDB的等價物。什麼是更新SQL的MongoDB相當於更新現有字段值的記錄
update tblName set kwatt = kwatt/3600000 where kwatt is not null.
注:
我知道我們可以在服務器寫一個JS功能,完成這件事,我想這是從PHP驅動程序做,我不知道我怎麼能做到這一點容易。
請幫忙。
我有這個下面的SQL,我想知道MongoDB的等價物。什麼是更新SQL的MongoDB相當於更新現有字段值的記錄
update tblName set kwatt = kwatt/3600000 where kwatt is not null.
注:
我知道我們可以在服務器寫一個JS功能,完成這件事,我想這是從PHP驅動程序做,我不知道我怎麼能做到這一點容易。
請幫忙。
其實你可以既結合findAndModify
和stored 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)"}}});
它只是想法,我沒有測試它..
這很有趣。我會測試並回復你。 –
雖然沒有直接的方式在PHP中運行'findAndModify()',但它仍然可以從'$ db-> command()'得到。 –
你說得對,在PHP中運行findAndMofigy的唯一方法是$ db-> command() –
您不能在一個數據庫操作中執行此操作。您需要先查詢相關的行,然後對每行執行一次額外的更新操作。 不可能使用一個數據庫操作中結果行的值更新文檔的值。其餘的由你自己決定,直截了當。
不是我期望的答案,但看起來像沒有?有一些希望,仍然在尋找它:D –
查看[更新的MongoDB文檔](http://www.mongodb.org/display/DOCS/Updating)它看起來像這樣應該是可能的使用修改器操作。不過,我目前無法測試這個... – jlundqvist
注意,有兩個環節進行更新:1)基於以前的值更新。 2)更新多條記錄。 – Thilo