如何从Cloudant(或Mango)查询中排除某些文档?

时间:2017-09-26 21:07:07

标签: couchdb cloudant couchdb-mango

我将IMDB电影演示数据库导入我的CouchDB实例,并通过使用一些Cloudant教程和参考资料来学习Mango。

我写了这个查询来识别其中演员的名字就像"布鲁斯"的文件。现在我想修改它以从结果集中排除某些文档。例如,Movie_name<> '怪物'

这是可能的,如果是的话,任何人都可以帮我弄清楚如何做到这一点吗?

{"selector":
  {"_id":
    {"$gt": null},
    "Person_name": {"$regex": "(?i)bruce"}
  }
}

1 个答案:

答案 0 :(得分:2)

$ne运算符可用于匹配“不等于”给定值的文档。

{
  "selector":{
     "_id": {"$gt": null},
     "Person_name": {"$regex": "(?i)bruce"},
     "Movie_name": { "$ne": "Monster" }
  }
}

提醒一句:在查询中使用$regex并不是表现出色的方法,因为它不可避免地迫使CouchDB对数据库中的所有文档进行手动扫描,而不是利用预建指数。同样,$ne运算符具有类似的性能特征。

使用Cloudant数据库(托管CouchDB服务)的建议做法是在要查询的字段上创建type=text索引。该索引允许您在查询中使用$text运算符代替正则表达式,这应该更有效。