Skip to main content
 首页 » 编程设计

python之Asyncmongo 不返回 _id

2025年05月04日9qlqwjy

使用 PyMongo:

import pymongo 
conn=pymongo.Connection(host='127.0.0.1',port=27017) 
db=conn.cms 
db.comments.save({'content':'test', 'user':'admin'}) 

然后返回:

ObjectId('4ea175b96e955237aa000000') 

PyMongo 没问题。 但是当我使用 AsyncMongo 时,我无法得到 _id 作为响应。

class PoCommentsHandler(BaseClass): 
    @tornado.web.asynchronous 
    def post(self): 
        self.mongo.comments.save({'content':'test', 'user':'admin'}, callback=self._callback) 
    def _callback(self, response, error): 
        if error: raise tornado.web.HTTPError(500) 
        logging.info(response) 
        self.finish(str(response)) 

然后返回:

[I 111021 21:25:02 cms:104] [{u'connectionId': 41, u'ok': 1.0, u'err': None, u'n': 0}] 

谁能告诉我哪里错了?谢谢

请您参考如下方法:

没有错,MongoDB 本身不会返回刚刚插入的文档的 id,pymongo 会为您做这件事。 pymongo API 的异步实现(也在 Tornado IOLoop 上)称为 APyMongo ,它的行为应该符合您的预期。

有关此主题的更多信息,请参阅此 Google 群组主题:http://groups.google.com/group/python-tornado/browse_thread/thread/9f43f85916156848