1

我正在使用电机驱动程序连接到 Mongo DB。下面是向集合中插入数据的代码

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

插入语句总是返回 None。这不是 Tornado 应用程序。马达只能与 Tornado 一起使用吗?如果不是,为什么插入没有返回?

4

2 回答 2

2

你像 pymongo 一样使用电机。但是电机是异步的:这意味着当您执行打印时,数据库请求可能还没有完成。此外,电机插入不返回任何内容,您需要使用回调函数作为第二个参数。参照。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 回答