Облачный запрос на возврат записей, где 2 поля равны

Я могу искать конкретные значения для полей. Как я могу искать поля, равные другим полям? Например,

я имею docId а также parentDocId; как мне искать записи, которые имеют docId == parentDocId?

запрос для поиска конкретного идентификатора, который равен "123":

let query = ["parentDocId": ["$eq":"123"]]
let result = datastore.find(query, skip: 0, limit: 0, fields: nil, sort: nil)

Я хотел бы найти где parentDocId == docId.

Есть идеи?

PS Я использую Swift

1 ответ

Нет необходимости использовать Cloudant Query. Предполагая, что ваши документы имеют следующую структуру

{
 "_id": "2b7946de457b6fc9af3e3d29faa3fcba",
 "_rev": "3-088f847ef010504e7a5beb0c821d72ea",
 "parentDocId": "2b7946de457b6fc9af3e3d29faa3fcba",
 ...
}

Вы можете создать вид, как это

PUT https://$USERNAME:$PASSWORD@$HOST/$DATABASE/_design/demo HTTP/1.1
Content-Type: application/json

 {
  "views": {
  "parent_child": {
   "map": "function (doc) {\n  if(doc._id === doc.parentDocId) {\n    emit(doc._id, 1);\n  }\n}"
   }
  }
 }

и запросить его:

GET https://$USERNAME:$PASSWORD@$HOST/$DATABASE/_design/demo/_view/parent_child HTTP/1.1

Все клиентские библиотеки должны поддерживать представления, поскольку они являются фундаментальной концепцией в CouchDB/Cloudant. Я не знаком со Swift, но в документации библиотеки должен быть указан соответствующий метод, который необходимо вызвать для выполнения вызова, который эквивалентен общему HTTP-методу, который я перечислил.

Другие вопросы по тегам