Cloudant查询返回2个字段相等的记录

时间:2017-03-11 12:52:57

标签: swift cloudant

我可以搜索字段的特定值。如何搜索与其他字段相等的字段?例如,

我有docIdparentDocId;如何搜索具有docId == parentDocId的记录?

查询以搜索等于“123”的特定ID:

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

我想搜索parentDocId == docId。

有什么想法吗?

P.S。我正在使用Swift

1 个答案:

答案 0 :(得分:1)

无需使用Cloudant查询。假设您的文档具有以下结构

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

您可以像这样创建a view

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相同的调用。