質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MongoDB

MongoDBはオープンソースのドキュメント指向データベースの1つです。高性能で、多くのリトルエンディアンシステムを利用することができます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

1002閲覧

[MongoDB]元データをもとにしたデータ更新

moscow3

総合スコア201

MongoDB

MongoDBはオープンソースのドキュメント指向データベースの1つです。高性能で、多くのリトルエンディアンシステムを利用することができます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2019/03/11 12:52

編集2019/03/11 12:59

MongoDBのデータの更新は

db.コレクション名.update({検索条件}, {更新内容})

ですが、例えば、「全データのscoreをextraづつ上げて更新」というような処理をするにはどうすればよいでしょうか?

python

1for d in collection.find(): 2 #ここで、d['score']をd['extra']の値を足した値に更新

DBの構造(仮)

{ { name:'tanaka', score:95, extra:10, }, { name:'yamada', score:100, extra:20, }, { name:'tanaka', score:70, extra:5, }, { name:'satou', score:30, extra:90; }, }

また、「scoreが100を超えるようであれば、100にする」というような条件付きの場合のやり方もご教授いただけると嬉しいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

https://stackoverflow.com/questions/43712821/how-to-update-cursor-docs-in-mongodb-with

上記が参考になりました。

aggregateは以下のような感じで

python

1collection.aggregate([ 2 {'$project': { 3 "name": 1, 4 "score": 1, 5 "extra": 1, 6 "total": { 7 '$let': { 8 'vars': { 9 'val': {'$add': ["$score", "$extra"]}, 10 }, 11 'in': { 12 '$cond': [{'$gt': [ "$$val", 100 ]}, 100, "$$val"] 13 } 14 } 15 } 16 }}, 17 {'$out': "modified"} 18 ])

投稿2019/03/12 06:14

t_obara

総合スコア5488

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問