.update({'room_name' : room_name}, {'started_user_list' : []})
のような感じにするのと思った。 そうすると'room_name' = room_nameの条件のカラム内が 'started_user_list' : []になってしまう・・・。
$setを使う。
.update(
{'room_name': room_name},
{ "$set": {'started_user_list': []} }
)
と言った具合。
ちなみに"$set"なので注意。
さらに、複数行の時はmultiオプションが必要。
.update(
{'room_name': room_name},
{ "$set": {'started_user_list': []} },
multi=True
)
MongoDB Blog / Multi-document update & Atomicity ここを見てわかると思うが、
`> db.foo.find() [
{"_id" : ObjectId("4ec2e036e2a13727b"), "text" : "bar", "value" : 11},
{"_id" : ObjectId("4efba63c4d6a58d47"), "text" : "foo", "value" : 22},
{"_id" : ObjectId("4ecee6f9e2534534a"), "text" : "foo bar", "value" : 33},
{"_id" : ObjectId("4e9e46f9e2a4324a0"), "text" : "bar foo", "value" : 44}
]`
に対して、
db.foo.update({"value" : {$gt : 30}}, {$set : {"text" : "blah"}})
を行うと、30より(>30)多いものに対してtextをblahにする。
`> db.foo.find()
[
{"_id" : ObjectId("4ec2e036e2a13727b"), "text" : "bar", "value" : 11},
{"_id" : ObjectId("4efba63c4d6a58d47"), "text" : "foo", "value" : 22},
{"_id" : ObjectId("4e9e46f9e2a4324a0"), "text" : "bar foo", "value" : 44},
{"_id" : ObjectId("4ecee6f9e2534534a"), "text" : "blah", "value" : 33}
]`
となっている。 複数ではなく1つだけなので、
{"_id" : ObjectId("4e9e46f9e2a4324a0"), "text" : "bar foo", "value" : 44},
はそのまま。
MongoDB and Python: Patterns and processes for the popular document-oriented database
- 作者: Niall O'Higgins
- 出版社/メーカー: O'Reilly Media
- 発売日: 2011/09/16
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: Rick Copeland
- 発売日: 2012/07/22
- メディア: Kindle版
- この商品を含むブログを見る