Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用asyncmongo从MongoDB返回不同的密钥_Python_Mongodb_Tornado_Pymongo - Fatal编程技术网

Python 使用asyncmongo从MongoDB返回不同的密钥

Python 使用asyncmongo从MongoDB返回不同的密钥,python,mongodb,tornado,pymongo,Python,Mongodb,Tornado,Pymongo,我将asyncmongo与Tornado+gen.engine一起使用,只是想知道与db.collection.distinct(“mykey”)等效的语法是什么 我猜是这样的 result, error = yield gen.Task(settings.DB.my_data.find, {}, distinct=[("key","mykey")]) 但那是行不通的。无论出于什么原因,我在网上找不到任何这样的例子 谢谢。结果我将切换到Motor,它支持distinct()作为查询,加上has

我将asyncmongo与Tornado+gen.engine一起使用,只是想知道与
db.collection.distinct(“mykey”)
等效的语法是什么

我猜是这样的

result, error = yield gen.Task(settings.DB.my_data.find, {}, distinct=[("key","mykey")])
但那是行不通的。无论出于什么原因,我在网上找不到任何这样的例子


谢谢。

结果我将切换到Motor,它支持distinct()作为查询,加上has,这对于在启动回调之前等待多个查询完成非常方便。

结果我将切换到Motor,它支持distinct()作为查询,plus具有一个非常方便的功能,可以在触发回调之前等待多个查询完成。

问题是,“独特”不是查询的选项,它是一个单独的命令:

因此,请使用AsyncMongo的command()方法:

您需要的数据在结果['values']中

AsyncMongo的测试套件中有更多使用AsyncMongo命令的示例:

以及有关MongoDB命令的一般信息(示例使用PHP编写,但即使对于像我们这样的Python程序员也很容易理解):

问题是,“distinct”不是查询的选项,它是一个单独的命令:

因此,请使用AsyncMongo的command()方法:

您需要的数据在结果['values']中

AsyncMongo的测试套件中有更多使用AsyncMongo命令的示例:

以及有关MongoDB命令的一般信息(示例使用PHP编写,但即使对于像我们这样的Python程序员也很容易理解):


它会给你错误或返回错误的结果?错误…我只是临时修改了我给出的示例的语法,但我开始认为它还没有实现?我见过有人使用带有reduce函数的“group”,但这似乎有些过分。它会给你带来错误或返回错误的结果?错误…我只是在临时修改我给出的示例的语法,但我开始认为它还没有实现?我见过人们使用带有reduce函数的“group”,但这似乎有些过分。
>>> 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}