我试图从下面的场景中得到结果时是否对使用选择符或视图或两者都有困惑:我应该在Cloudant中使用选择器还是视图?
我需要为书进行wildsearch并返回书的结果加上价格和商店分店名称的详细信息。
所以我试着用选择做wildsearch使用正则表达式
"selector": { "_id": { "$gt": null }, "type":"product", "product_name": { "$regex":"(?i)"+search } }, "fields": [ "_id", "_rev", "product_name" ]
我能够得到的结果。获得结果后的想法是使用结果集中的所有_id,并查询视图以获取更多详细信息,例如价格和商店分支名称在其他文档上,这些我觉得有些奇怪,我不确定是正确的方法来做到这一点。
一旦我得到_id的结果并将其作为“productId”变量插入,下面只是这个想法。
var input = { method : 'GET', returnedContentType : 'json', path : 'test/_design/app/_view/find_price'+"?keys=[\""+productId+"\"]", }; return WL.Server.invokeHttp(input);
,所以我要求输入方关于这方面的专家。
另一个问题是如何获得store_branch_name?它可以在一个单一的视图中完成,我们可以获得产品细节,价格和商店分店名称?或者我需要有几个观点来实现这个目标?
预期的结果
product_name (from book document) : Book 1 branch_name (from branch array in Store document) : store 1 branch one price (from relationship document) : 79.9
参考文献:
书
"_id": "book1",
"_rev": "1...b",
"product_name": "Book 1",
"type": "book"
"_id": "book2",
"_rev": "1...b",
"product_name": "Book 2 etc",
"type": "book"
关系
"_id": "c...5",
"_rev": "3...",
"type": "relationship",
"product_id": "book1",
"store_branch_id": "Store1_branch1",
"price": "79.9"
商店
{
"_id": "store1",
"_rev": "1...2",
"store_name": "Store 1 Name",
"type": "stores",
"branch": [
{
"branch_id": "store1_branch1",
"branch_name": "store 1 branch one",
"address": {
"street": "some address",
"postalcode": "33490",
"type": "addresses"
},
"geolocation": {
"coordinates": [
42.34493,
-71.093232
],
"type": "point"
},
"type": "storebranch"
},
{
"branch_id": "store1_branch2",
"branch_name":
**details ommit...**
}
]
}
非常感谢你的回答,并且很抱歉现在就回复,可能我对于我在解释中想要做的事情并不十分清楚。总之,我只想列出商店分店和价格的书籍清单。与上面给出的文件。我实际上已经通过将商店和商店分支合并为1个文档来非规范化。但其余的我不认为我可以再次正常化它。 – kkurni
关于第二个问题,我实际上很难在单个查询中引用商店分支标识。 我的“关系”文档有product_id,store_branch_id和价格。问题是我不知道如何在Store文档中引用store_branch_id和branch []。branch_id,因为它是一个嵌套对象 – kkurni