0

我将 IMDB 电影演示数据库导入到我的 CouchDB 实例中,并且正在通过使用一些 Cloudant 教程和参考资料来了解 Mango。

我编写了这个查询来识别演员的名字像“bruce”的文档。现在我想修改它以从结果集中排除某些文档。例如电影名称 <> '怪物'。

这可能吗?如果可以,谁能帮我弄清楚如何做到这一点?

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

1 回答 1

2

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

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

提醒一句:$regex在查询中使用 并不是获得出色性能的秘诀,因为它不可避免地会迫使 CouchDB 手动扫描数据库中的所有文档,而不是利用预先构建的索引。同样,$ne算子也有类似的性能特征。

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

于 2017-09-27T06:48:47.783 回答