我使用以下函数创建索引:
function (doc) {
if(doc.type === 'Property') {
if(doc.Beds_Max) {
try {
index("Beds_Max", parseInt(doc.Beds_Max));
}
catch(err) {
//ooopss
}
}
if(doc.YearBuilt) {
try {
index("YearBuilt", parseInt(doc.YearBuilt));
}
catch(err) {
//ooopss
}
}
}
}
使用cloudant设计文档 - >新搜索索引和构建索引后,我可以发出类似
的查询"YearBuilt": [2010 TO Infinity]
但是,如果我尝试使用Cloudant查询查询相同的索引,我会看到奇怪的行为。如果我去Cloudant Dashboard - >查询并传递类似
的内容 {"limit": 5,
"selector": {
"_id": {
"$gt": null
},
"Beds_Max": {"$gte": 7}
},
fields: ["_id"]}
我看到数据传输出现大幅增长,即使是最不寻常的查询也会继续接收大量数据,这些查询只能返回不超过1或2的结果,然后挂起我的电脑,这样很可能是不对的。当我使用Pouchdb-find
npm模块支持Cloudant 2.0 Query
并发出与上面相同的选择器时,我会看到不一致的行为,例如有时它返回0行,有时它会给出ETIMEOUTERROR
。如果我更改索引并排除parseInt
,我可以使用相同的Pouchdb-find
甚至Cloudant Dashboard->进行查询查询并获得结果,但在这种情况下,我失去了使用不等运算符的能力,这对我来说是不行的。
我愿意接受解决方案,甚至完全不同的功能,以达到理想的效果。