2012-09-24 35 views
1

我使用asyncmongo與Tornado + gen.engine,只是想知道什麼語法是相當於db.collection.distinct("mykey")使用asyncmongo返回來自MongoDB的不同密鑰

我以爲這是類似

result, error = yield gen.Task(settings.DB.my_data.find, {}, distinct=[("key","mykey")]) 

但是,這是行不通的。無論出於何種原因,我無法在網上找到任何這方面的例子。

謝謝。

+0

它給你錯誤或返回錯誤的結果? –

+0

錯誤...我只是即興就我給的例子的語法,但我開始認爲它還沒有實現呢?我已經看到人們使用具有減少功能的「組」,但這似乎過分。 –

回答

3

的問題是, 「不同的」 不爲查詢一個選項,它是一個單獨的命令:

http://www.mongodb.org/display/DOCS/Aggregation#Aggregation-Distinct

因此,使用AsyncMongo的命令()方法:

>>> from tornado.ioloop import IOLoop 
>>> import asyncmongo 
>>> db = asyncmongo.Client(pool_id='mydb', host='127.0.0.1', port=27017, maxcached=10, maxconnections=50, dbname='test') 
>>> def callback(result, error): 
...  print result 
...  IOLoop.instance().stop() 
... 
>>> db.command('distinct', 'my_data', key='my_key', callback=callback) 
>>> IOLoop.instance().start() 
{u'stats': {u'cursor': u'BasicCursor', u'timems': 0, u'nscannedObjects': 5, u'nscanned': 5, u'n': 5}, u'values': [1.0, 2.0], u'ok': 1.0} 

數據你需要的是結果['值']。利用AsyncMongo命令

更多實例在其測試套件:

https://github.com/bitly/asyncmongo/blob/master/test/test_command.py

而且對MongoDB的信息一般命令(例子是PHP,但它很容易,甚至理解爲Python程序員像我們):

http://www.kchodorow.com/blog/2011/01/25/why-command-helpers-suck/

相關問題