0

私はPythonを初めて使用します。私のスクリプトでは、MongoDBデータベースを更新するコードを記述しました。

def mongoInsert(userData, collection):
    mconn = Connection(MONGODB_HOST,MONGODB_PORT)
    mdb = mconn[MONGODB_DBNAME]
    col = mdb[collection]

    #The below codeis used to upsert the data in MongoDB.
    for user in userData:
        print user
        col.update({'id': user[0]}, {'$set':user}, True)
return

ここで、userDataはリストであり、

 userData = []

puttyを使用してコマンドpythonscript_name.pyを実行すると、スクリプトはエラーや例外なしで実行されます。しかし、MongoDBでデータを表示しようとすると、databseにデータが追加されていません(データが追加されているかどうかはわかりませんが、ここでは新しいため、表示できません) 。したがって、更新コマンド(ブール値や整数などの任意の戻りタイプの更新コマンド)の後にデータベース内の行を更新する方法があるかどうかを今考えています。

success = col.update({'id': user[0]}, {'$set':user}, True)
print success

しかし、それは常に成功のなしの値を出力します。したがって、上記のコードを変更して、データが追加されているかどうかを確認する方法はありますか。

4

1 に答える 1

1

私はラインでそれを推測します

col.update({'id': user[0]}, {'$set': user}, True)

user [0]がユーザーコレクションのドキュメント全体である場合、idがドキュメント全体であるドキュメントを更新しようとしています。あなたは次のようにsmthを書くべきです:

col.update({'_id': user[0]['_id']}, {'$set': user}, True)

さらに、私はあなたがその部分で何をしようとしているのか理解していません {'$set': user}これこれを読んでください。

クエリに問題がないことを確認するには、キーワード引数safe=Trueをupdateメソッドに渡す必要があります。

success = col.update({'id': user[0]}, {'$set': user}, True, safe=True)
print success

問題を正しく理解できなかった場合は申し訳ありません。

于 2012-11-26T10:36:07.670 に答える