我正在使用Motor驱动程序连接到Mongo DB。 以下是将数据插入集合的代码
client = motor.MotorClient('mongodb://localhost:27017').open_sync()
conn = client['database']['collection']
result = conn.insert({'foo': 'bar'})
print 'result:', result
insert语句始终返回None。 这不是Tornado应用程序。 电机只能用于龙卷风吗? 如果没有,为什么插入没有返回?
答案 0 :(得分:2)
你像pymongo一样使用马达。但是motor是异步的:这意味着当你的print执行时,db请求可能还没有完成。 此外,电机插入不会返回任何内容,您需要使用回调函数作为第二个参数。参看the differences between pymongo and motor和the motor tutorial on how to insert a document。
在你的情况下,解决这个问题的好方法是:
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
答案 1 :(得分:0)
我猜,WriteConcern不是从客户端驱动程序设置的。
如果将其设置为safe = true,那么您将获得插入操作的状态。否则使用safe = false,插入操作就会被激活而忘记。
您可以尝试:
motor.MotorClient('mongodb://localhost:27017/?safe=true')