如何在Couch Db获取父母详细信息?

时间:2014-05-19 05:53:07

标签: couchdb

请帮帮我

我创建了一个名为Product

的数据库

我创建了2个ID为“P101”,“P102”

的产品文档

{    “_id”:“P101”,    “_rev”:“5-8d1c4b5b7f6e65a5997d4ec5b4346e5f”,    “类型”:“产品”,    “名字”:“衬衫”,    “hersteller”:“oska”,    “价格”:11.15 }

{    “_id”:“P102”,    “_rev”:“3-8ad956f0c524b1a2396ebdda1ed0afbe”,    “类型”:“产品”,    “名字”:“套头衫”,    “hersteller”:“极致”,    “价格”:7.58 }

现在添加了一个订单文档,其中'P101'作为其父

{    “_id”:“ORD-101”,    “_rev”:“7-dbd8cca3b6dc9f4cb3b8bb7e4aec6630”,    “type”:“order”,    “orderDate”:“01.01.2012”,    “parentProdct”:“P101” }

现在我添加了报告文档,其中'ORD-101'作为其父

{    “_id”:“REPORT-101”,    “_rev”:“10-c57e3c039a44d95d6bd40d8a83a951da”,    “type”:“REPORT”,    “parentOrder”:“ORD-102” }

在此之后,我已经添加了具有相应视图功能的设计文档

{    “_id”:“_ design / proddesign”,    “_rev”:“87-d1b0a8c8cdfe569bbf9805df4918af4f”,    “rev”:“3-productrev”,    “意见”:{
       “第五”: {            “map”:“function(doc){if(doc.type =='REPORT'){emit(doc._id,{_ id:doc.reportDet});}}”        }    } }

.. 这只给我父母关闭报告文件。实际上我也要打印订单文件的相应父母的详细信息。

即细节'P101'也.. ..

我怎样才能实现......帮助

1 个答案:

答案 0 :(得分:0)

假设以下数据(注意:从您的示例中删除了_rev和未使用的文档):

{ 
  "_id": "P101", 
  "type": "product", 
  "name": "Shirt", 
  "hersteller": "oska", 
  "price": 11.15 
}

{ 
  "_id": "ORD-101", 
  "type": "order", 
  "orderDate": "01.01.2012", 
  "product": "P101" 
}

{ 
  "_id": "REPORT-101", 
  "type": "REPORT", 
  "order": "ORD-101",
  "product": "P101" 
}

您希望按照以下方式执行以下操作:

if doc.type == "product"
    emit([doc.id], doc.type)
if doc.type == "order"
    emit([doc.product, doc.id], doc.type)
if doc.type == "report"
    emit([doc.product, doc.order, doc.id], doc.type)

这将导致视图输出如下:

[
    [["P101"], "product"], 
    [["P101", "ORD-101"], "order"], 
    [["P101", "ORD-101", "REPORT-101"], "report"]
]

如果您使用

查询
?startkey=["P101"]&endkey=["P101",{}]

将为您提供产品P101以及该产品的所有订单和报告。