pymongoでmongodbへデータを追加する

5月18日のエントリでmognodbへ某データを投入しました。
この元となるデータには、IDや氏名、電話番号などひと通り必要な情報は入っているのですが、唯一「所属」のデータがありません。東京都所属の人ならわかりますよね。所属データです。
他県だとそうでもないのでしょうが、東京都の場合はこのデータってわりと重要だったりします。
そこで、このデータをmongodbへ追加。

元データを準備

所属情報を準備します。名前をキーにしたりすると面倒なのでメンバーIDをキーにします。こんなファイルを作成。

1234567,月組
3521456,花組
(以下ずらっと)

pymongoでスクリプトを作成

上記で作成したファイルを一行づつ読み込んで、mongodbからメンバーIDをキーにしてfind。
findしたものはディクショナリになっているので、これに所属データを追加。

#!/usr/bin/python
# -*- coding:utf-8 -*-

import pymongo

conn = pymongo.Connection()
db = conn["test"]
collection = db["members"]          #コレクションを作成

datafile=open("./syozoku.csv","r")  #所属データファイルをオープン

for line in datafile.readlines():
    line = line[:-1]                  #行末の改行(\n)を削除
    id_name = line.split(",")         #splitして(メンバーID,所属)というリストを作成する。
    data = collection.find_one({"メンバーID":id_name[0]}) #mongodbからデータ読み込み。
    data['所属'] = id_name[1]    #所属データを追加
    collection.save(data)      #mongodbへ追加

datafile.close()

updateでなくてもsave()でOK。objectIdが一致しているので上書きしてくれるようです。