У меня есть база данных документов, которые имеют следующую структуру данных:безгильзовое согласования с использованием представлений в Cloudant
{
"_id": "sampleID",
"_rev": "sample-rev",
"added": "2014-09-09 01:05:32",
"cached": 1,
"subject": "sample topic",
"mode": "<samplemode>",
"protected": 0,
"added_by": "myname",
"factoid": "sample factoid"
}
И у меня есть следующий вид:
function(doc) {
if (doc.subject && doc.factoid && doc.mode){
emit(doc.subject, doc.factoid);
}
}
Мне нужно, чтобы получить все документы, где это «субъект» соответствует предоставленному ключу. Я бы хотел, чтобы это было не чувствительным к регистру. POST даст мне все совпадения, которые я хочу, но только в случае совпадения.
https://<username>.cloudant.com/<db>/_design/<designdoc>/_view/<view>?include_docs=true
{ "keys" : ["<subject>"] }
Я также попытался найти индексы без успеха. В этом API упоминается оператор регулярных выражений, который я не смог получить. Кажется, что это просто, как мне подойти к этому?
Что касается подхода $ regex, вот где я нахожусь. Следующий POST работает так же, как и мои предыдущие попытки вернуть результаты, чувствительные к регистру.
https://<username>.cloudant.com/<db>/_find
{
"selector": {
"subject": {"$eq": "<subject>"}
},
"fields": ["_id", "_rev", "subject", "factoid"]
}
Подставляя оператор $ регулярного выражения для $ эк дает следующее сообщение об ошибке:
{
"error": "no_usable_index",
"reason": "There is no operator in this selector can used with an index."
}
Опорный материал для этой функции весьма невелик. Он упоминается только на этой странице: https://docs.cloudant.com/api/cloudant-query.html
URL-адрес для $ регулярное выражение документации изменилось, здесь вы идете: https://console.bluemix.net/docs/services/Cloudant/ апи /cloudant_query.html#combination-operators – Netsmile