teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

大幅な質問の改善

2019/03/11 12:59

投稿

moscow3
moscow3

スコア201

title CHANGED
File without changes
body CHANGED
@@ -3,50 +3,36 @@
3
3
  db.コレクション名.update({検索条件}, {更新内容})
4
4
  ```
5
5
 
6
+ ですが、例えば、「全データのscoreをextraづつ上げて更新」というような処理をするにはどうすればよいでしょうか?
7
+ ```python
8
+ for d in collection.find():
9
+ #ここで、d['score']をd['extra']の値を足した値に更新
10
+ ```
6
11
 
7
- ですが、例えば、次ようなデータがあったとして、
12
+ DB構造(仮)
8
13
  ```
9
14
  {
10
15
  {
11
16
  name:'tanaka',
12
17
  score:95,
18
+ extra:10,
13
19
  },
14
20
  {
15
21
  name:'yamada',
16
22
  score:100,
23
+ extra:20,
17
24
  },
18
25
  {
19
26
  name:'tanaka',
20
27
  score:70,
28
+ extra:5,
21
29
  },
22
30
  {
23
31
  name:'satou',
24
32
  score:30,
33
+ extra:90;
25
34
  },
26
35
  }
27
36
  ```
28
- この中から「nameがtanakaのscoreを10だけアップする」というような処理を行う場合、どのようにすればよいでしょうか?
29
37
 
30
- (find()を使った後にUpdate()をしてもいいですが、何となく無駄な感じがします)
31
-
32
- また、「nameがtanakaのscoreを10だけアップする、scoreが100を超えるようであれば、100にする」というような条件付きの場合のやり方もご教授いただけると嬉しいです。
38
+ また、「scoreが100を超えるようであれば、100にする」というような条件付きの場合のやり方もご教授いただけると嬉しいです。
33
- ```
34
- {
35
- {
36
- name:'tanaka',
37
- score:100,
38
- },
39
- {
40
- name:'yamada',
41
- score:100,
42
- },
43
- {
44
- name:'tanaka',
45
- score:80,
46
- },
47
- {
48
- name:'satou',
49
- score:30,
50
- },
51
- }
52
- ```