2015年9月8日火曜日

開発環境

MongoDBイン・アクション (Kyle Banker (著)、Sky株式会社 玉川 竜司 (翻訳)、オライリージャパン)のⅠ部(初めてのMongoDB)、3章(MongoDBを使ったプログラムの作成)、3.1(Rubyを通してみるMongoDB)、3.1.4(更新と削除)を Python で考えてみる。

コード(Emacs)

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import pymongo

def p(collection):
    for doc in collection.find():
        print(doc)
    print()
        
client = pymongo.MongoClient()
db = client['tutorial']
users = db['users']

users.find()
p(users)
print('update')
users.update({'last_name':'smith'},
             {'$set':{'city':'Chicago'}})
p(users)

print("update(multi=True)")
users.update({'last_name':'smith'},
             {'$set':{'city':'New York'}},
             multi=True)
p(users)
print("delete_many")
curosr = users.delete_many({'age': {'$gte':40}})
p(users)

print("remove")
users.remove()
p(users)

print("find")
users.find()
p(users)

print("collection")
print(db.collection_names())
print('drop_collection')
db.drop_collection('users')
print(db.collection_names())

入出力結果(Terminal, IPython)

$ ./sample1_4.py
{'_id': ObjectId('55ee66b3a54d75fa11e79f85'), 'last_name': 'smith', 'age': 30}
{'_id': ObjectId('55ee66b3a54d75fa11e79f86'), 'last_name': 'jones', 'age': 40}
{'_id': ObjectId('55ee66b4a54d75fa12f3e72d'), 'last_name': 'smith', 'age': 30}
{'_id': ObjectId('55ee66b4a54d75fa12f3e72e'), 'last_name': 'jones', 'age': 40}
{'_id': ObjectId('55ee66b6a54d75fa13507320'), 'last_name': 'smith', 'age': 30}
{'_id': ObjectId('55ee66b6a54d75fa13507321'), 'last_name': 'jones', 'age': 40}
{'_id': ObjectId('55ee66b8a54d75fa147c845f'), 'last_name': 'smith', 'age': 30}
{'_id': ObjectId('55ee66b8a54d75fa147c8460'), 'last_name': 'jones', 'age': 40}
{'_id': ObjectId('55ee66baa54d75fa15e6d6b5'), 'last_name': 'smith', 'age': 30}
{'_id': ObjectId('55ee66baa54d75fa15e6d6b6'), 'last_name': 'jones', 'age': 40}

update
{'_id': ObjectId('55ee66b3a54d75fa11e79f85'), 'last_name': 'smith', 'age': 30, 'city': 'Chicago'}
{'_id': ObjectId('55ee66b3a54d75fa11e79f86'), 'last_name': 'jones', 'age': 40}
{'_id': ObjectId('55ee66b4a54d75fa12f3e72d'), 'last_name': 'smith', 'age': 30}
{'_id': ObjectId('55ee66b4a54d75fa12f3e72e'), 'last_name': 'jones', 'age': 40}
{'_id': ObjectId('55ee66b6a54d75fa13507320'), 'last_name': 'smith', 'age': 30}
{'_id': ObjectId('55ee66b6a54d75fa13507321'), 'last_name': 'jones', 'age': 40}
{'_id': ObjectId('55ee66b8a54d75fa147c845f'), 'last_name': 'smith', 'age': 30}
{'_id': ObjectId('55ee66b8a54d75fa147c8460'), 'last_name': 'jones', 'age': 40}
{'_id': ObjectId('55ee66baa54d75fa15e6d6b5'), 'last_name': 'smith', 'age': 30}
{'_id': ObjectId('55ee66baa54d75fa15e6d6b6'), 'last_name': 'jones', 'age': 40}

update(multi=True)
{'_id': ObjectId('55ee66b3a54d75fa11e79f85'), 'last_name': 'smith', 'age': 30, 'city': 'New York'}
{'_id': ObjectId('55ee66b3a54d75fa11e79f86'), 'last_name': 'jones', 'age': 40}
{'_id': ObjectId('55ee66b4a54d75fa12f3e72d'), 'last_name': 'smith', 'age': 30, 'city': 'New York'}
{'_id': ObjectId('55ee66b4a54d75fa12f3e72e'), 'last_name': 'jones', 'age': 40}
{'_id': ObjectId('55ee66b6a54d75fa13507320'), 'last_name': 'smith', 'age': 30, 'city': 'New York'}
{'_id': ObjectId('55ee66b6a54d75fa13507321'), 'last_name': 'jones', 'age': 40}
{'_id': ObjectId('55ee66b8a54d75fa147c845f'), 'last_name': 'smith', 'age': 30, 'city': 'New York'}
{'_id': ObjectId('55ee66b8a54d75fa147c8460'), 'last_name': 'jones', 'age': 40}
{'_id': ObjectId('55ee66baa54d75fa15e6d6b5'), 'last_name': 'smith', 'age': 30, 'city': 'New York'}
{'_id': ObjectId('55ee66baa54d75fa15e6d6b6'), 'last_name': 'jones', 'age': 40}

delete_many
{'_id': ObjectId('55ee66b3a54d75fa11e79f85'), 'last_name': 'smith', 'age': 30, 'city': 'New York'}
{'_id': ObjectId('55ee66b4a54d75fa12f3e72d'), 'last_name': 'smith', 'age': 30, 'city': 'New York'}
{'_id': ObjectId('55ee66b6a54d75fa13507320'), 'last_name': 'smith', 'age': 30, 'city': 'New York'}
{'_id': ObjectId('55ee66b8a54d75fa147c845f'), 'last_name': 'smith', 'age': 30, 'city': 'New York'}
{'_id': ObjectId('55ee66baa54d75fa15e6d6b5'), 'last_name': 'smith', 'age': 30, 'city': 'New York'}

remove

find

collection
['numbers', 'system.indexes', 'users']
drop_collection
['numbers', 'system.indexes']
$

0 コメント:

コメントを投稿