1

モータードライバーを使用してMongo DBに接続しています。以下は、コレクションにデータを挿入するコードです

  client = motor.MotorClient('mongodb://localhost:27017').open_sync()
  conn = client['database']['collection']
  result = conn.insert({'foo': 'bar'}) 
  print 'result:', result

insert ステートメントは常に None を返します。これはトルネード アプリケーションではありません。モーターはトルネードのみ使用できますか?そうでない場合、挿入が何も返さないのはなぜですか?

4

2 に答える 2

2

pymongo と同じように motor を使用します。しかし、モーターは非同期です。これは、印刷が実行されたときに、db 要求がまだ完了していない可能性があることを意味します。さらに、モーター挿入は何も返さないため、コールバック関数を第 2 引数として使用する必要があります。参照。pymongo と motor の違い、および ドキュメントの挿入方法に関する motor チュートリアル

あなたの場合、これを解決する良い方法は次のとおりです。

client = motor.MotorClient('mongodb://localhost:27017').open_sync()
conn = client['database']['collection']
result = conn.insert({'foo': 'bar'}, callback=once_done) 

def once_done(result, error):
    if error: print 'error:', error
    else:
        print 'result:', result
于 2013-05-05T15:49:12.857 に答える
0

私は、WriteConcern がクライアント ドライバーから設定されていないと思います。

safe=true に設定すると、挿入操作のステータスが取得されます。それ以外の場合、safe=false の場合、挿入操作はファイア アンド フォーゲットです。

あなたが試すことができます:

motor.MotorClient('mongodb://localhost:27017/?safe=true')
于 2013-05-05T05:16:08.200 に答える