我有一个CouchDB数据库,它使用查询语言Mango - 它似乎与Cloudant的查询语言相同。
我正在尝试搜索并比较两个字段,只有当它们相等时才返回相关结果。
例如:
{{1}}
我试图提出一个查询,在这个例子中,将返回“OFFER0” - 因为OFFER0存在于“OfferID”
编辑(澄清):查询需要能够选择以OFFER开头且存在于OfferID字段中的所有_id。
我知道我可以使用视图设置它(如:Cloudant query to return records where 2 fields are equal所示),但我需要在Mango查询中使用它,因为它将在Hyperledger上运行
答案 0 :(得分:2)
您可以使用以下查询轻松返回 _id
字段以“OFFER”开头的文档:
{&#xA ; “选择器”:{
 “_id”:{
 “$ regex”:“^ OFFER”
 }
 }
}



 但这可能效率低下,因为Cloudant必须扫描整个数据库,测试每个文档 _id
字段。
设计数据的更好方法可能是使 type
字段区分在数据库中的文档类型之间,例如
{
 “_id”:“OFFER0”,
 “_rev”:“1-2af5f5c7b1c59dd3f0997f748a367cb2”,
 “type”:“offer”,
 “来自”:“商家1”,
 “收件人”:“customer1”
}



 然后返回所有 type ='的文档的查询offer'
变为:
{
 “选择器”:{
 “type”:“offer”
 }
}



 我不完全理解你在哪里说“哪一个存在于OfferID字段中“。但重要的是要注意Cloudant Query&芒果只能查询单个文件 - 你不能说“把我所有的文件都拿给我,另一个文件有一定的属性”。在每个文档中包含您需要的所有数据,然后您就可以干净地查询它。