使用mango查询cloudant和couchdb 2.0的数组中的索引和查询项

时间:2015-12-05 15:42:25

标签: couchdb cloudant couchdb-mango

我有以下数据库结构:

{"_id": "0096874","genre": ["Adventure","Comedy", "Sci-Fi" ]}
{"_id": "0099088","genre": ["Comedy", "Sci-Fi", "Western"]}

并喜欢像我在mongodb中那样查询它

db.movies.find({genre: {$in: ["Comedy"]}})

当我为整个数据库使用文本索引时,它可以工作,但这看起来非常浪费:

// index
    {
      "index": {},
      "type": "text"
    }
//query
{
  "selector": {
    "genre": {
      "$in": ["Comedy"]
    }
  },
  "fields": [
    "_id",
    "genre"
  ]
}

以下索引不起作用:

{
  "index": {
    "fields": [
      "genre"
    ]
  },
  "type": "json"
}

cloudant查询的正确索引是什么,它不会索引整个数据库? 谢谢你的帮助

1 个答案:

答案 0 :(得分:2)

你几乎是正确的。您的索引是正确的,但您需要使用选择器来获取所有ID https://cloudant.com/blog/mango-json-vs-text-indexes/

正如托尼所说,这不是一个表现良好的解决方案,

这个工作的原因同样是因为Mango执行上述$操作作为针对​​所有文档的过滤机制。正如我们在上一节关于JSON语法的结论中所看到的,上面查询的性能折衷是它本质上执行完整的索引扫描,然后应用过滤器。

{
  "selector": {
    "_id": {
      "$gt": null
    }, 
    "genre": {
      "$in": ["Western"]
    }
  },
  "fields": [
    "_id",
    "genre"
  ],
  "sort": [
    {
      "_id": "asc"
    }
  ]
}