我有一个字段“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代替$或时,我得到类似的结果。我错过了哪些可以快速进行此查询?
答案 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。