Cloudant使用$或$ in查询速度慢

时间:2016-07-24 22:32:59

标签: python cloudant

我有一个字段“userid”的索引设置。当我尝试使用和$或查询时,我得到了一个错误的请求。

query = cloudant.query.Query(db,selector={'$or':[{'userid': 35916}, {'userid': 11035}]},fields=['userid'])

首先添加'_id'可以正常工作,但是首先获取所有文档需要很长时间。

query = cloudant.query.Query(db,selector={'_id':{'$gt':0},'$or':[{'userid': 35916}, {'userid': 11035}]},fields=['userid'])

使用$ in代替$或时,我得到类似的结果。我错过了哪些可以快速进行此查询?

2 个答案:

答案 0 :(得分:1)

为了它的价值,我创建了一个"type": "json" Cloudant查询索引,并按照http://python-cloudant.readthedocs.io/en/latest/getting_started.html处的python-cloudant文档编写了一些简单的测试代码。这段代码对我有用:

import cloudant

client = cloudant.Cloudant("username", "password", account="account_name")
client.connect()
session = client.session()
db = client['testdb']

query1 = cloudant.query.Query(db,selector={'$or':[{'userid': 35916}, {'userid': 11035}]},fields=['_id', 'userid'])
#query2 = cloudant.query.Query(db,selector={'_id':{'$gt':0},'$or':[{'userid': 35916}, {'userid': 11035}]},fields=['_id', 'userid'])

for doc in query1.result:
    print doc

client.disconnect()

它返回:

{u'_id': u'266f9caae40012a04ce9223ccc67c8bd', u'userid': 35916}
{u'_id': u'5ff2cb156d16783492adb3eb8e2e0aec', u'userid': 11035}

答案 1 :(得分:0)

我的观察:$或$ in查询甚至抱怨即使查询_id并使用_all_docs索引也找不到索引。我认为这归结为数据库引擎内部不太好的查询规划。我正在使用CouchDB 2.0。