更新構文が正しくありません。次のようにする必要があります。
update(spec, document, upsert=False, multi=False, ...)
検索に使用したのと同じフィルターはどこspec
にありますか、つまり{ '_id' : ObjectId( 'anID' ) }
変更されたドキュメントで置き換えることによってドキュメントを更新するか、対象を絞った更新を使用して特定の値のみを変更することができます。対象を絞った更新の利点は、ユーザー ドキュメントを取得するためのサーバーへの最初のラウンド トリップを節約できることです。
交換用アップデート:
user = db.users.find_one( { '_id' : ObjectId( 'anID' ) } )
user['gender'] = newGender
db.users.update( { '_id' : user['_id'] }, user, False)
対象を絞った更新:
db.users.update( { '_id' : ObjectId( 'anID' ) }, \
{ '$set': { 'gender' : newGender } }, False )