我有以下数据库结构:
{"_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查询的正确索引是什么,它不会索引整个数据库? 谢谢你的帮助
答案 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"
}
]
}