読者です 読者をやめる 読者になる 読者になる

フロントサイドエンジニアという選択肢

HTMLコーダー → ECサイト運営 → システムエンジニア という経歴の著者がフロントサイトエンジニアという職業に今後の活路を見出し、その道に進むために取得した技術を貯めておくブログ

(Mongo DB)MongoDBの基本 ドキュメントの更新

MongoDB起動後にコマンドプロンプトからシェルを起動して操作します。
データの更新はupdateメソッドで行いますが、updateメソッドはデータを引数の値と入れ替える処理なので、フィールドを個別に更新する場合はsetメソッドを使用します。updateメソッドは第一引数に検索キーワードを指定して、第二引数に差し替えるデータを指定します。db.document name.update(key words, new data, [false], [false])のような形で使用します。(第三引数、第四引数については後述します。

例1)
peopleコレクション内からnameの値がhogeのドキュメントを検索して、データを{name:hoge, age:20}にする場合
db.people.update({name:"hoge"}, {name:hoge, age:20})

例2)
上記の場合でageの値のみを更新する場合
db.people.update({name:"hoge"}, {$set: {age:20}})

例3)
上記の場合でageの値に1を足したい場合
db.people.update({name:"hoge"}, {$inc: {age:1}})
(逆に1を引きたい場合は数値を-1にする)

※その他にも色々なパターンがあります。詳しい内容はMongoDBのwikiで確認できます。参考サイト:http://api.mongodb.org/wiki/

第三引数について

updateメソッドはupsert機能(項目がない場合は自動で追加)があり、第三引数をtrueにすることでupsert機能が有効になり、対象のドキュメント内に対象のフィールドが見つからなかった場合は自動で追加してくれるようになります。

例4)
更新、もしくは項目を追加したい場合
db.people.update({name:"hoge"}, {$push: {weight:50}}, true)
第四引数について

updateメソッドは、デフォルトでは最初に見つかったドキュメントのみに処理を行います。対象のドキュメント全てに更新を行うには第四引数をtrueにする必要があります。

例5)
全てのドキュメントを一括で更新する場合
db.people.update({}, {$push: {enable:true}}, ture, true)