Мотор возвращается Нет
Я использую драйвер мотора для подключения к БД Mongo. Ниже приведен код для вставки данных в коллекцию
client = motor.MotorClient('mongodb://localhost:27017').open_sync()
conn = client['database']['collection']
result = conn.insert({'foo': 'bar'})
print 'result:', result
Оператор вставки всегда возвращает None. Это не приложение Торнадо. Может ли мотор использоваться только с Торнадо? Если нет, то почему вставка ничего не возвращает?
2 ответа
Вы используете мотор так же, как пимонго. Но мотор асинхронный: это означает, что когда ваша печать выполняется, возможно, запрос БД еще не завершен. Кроме того, вставка двигателя ничего не возвращает, и вам нужно использовать функцию обратного вызова в качестве второго аргумента. Ср Различия между pymongo и 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
Я предполагаю, что WriteConcern не установлен от клиента-драйвера.
Если вы установите его как safe=true, тогда вы получите статус операции вставки. В противном случае с safe=false операция вставки запускается и забывается.
Ты можешь попробовать:
motor.MotorClient('mongodb://localhost:27017/?safe=true')