2011-12-05 11 views
2

このSQLは次のとおりです。MongoDBに相当することを知りたいと思います。既存のフィールド値を持つレコードを更新するUPDATE 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で次のように入力します。この更新には2つの部分があることを

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

それはちょうどアイデアのために、私はそれをテストdidntのだ。..

Stored Javascript Sample

+0

これは興味深いです。私はテストして、あなたに戻ってきます。 –

+1

これは動作しますが、PHPで 'findAndModify()'を直接実行する方法はありませんが、 '$ db-> command()'から取得することはできます。 –

+0

あなたが正しいですね、PHPでfindAndMofigyを実行する唯一の方法は$ db-> command()です。 –

1

これは、1回のデータベース操作では実行できません。関連する行を最初に照会してから、各行に対して追加の更新操作を実行する必要があります。 は、1つのデータベース操作内の結果行の値で文書の値を更新することはできません。残りはあなた次第です。

+0

私が期待している答えではありませんが、存在しないようですね??? D –

+0

[MongoDBのアップデートのためのドキュメント](http://www.mongodb.org/display/DOCS/Updating)を見ると、これは次のようなものです。修飾子操作。しかし、私は現時点でこれをテストすることはできません... – jlundqvist

関連する問題