鑑於我有以下產品:CouchDB的:查詢許多一對多「關係」
{
"_id": "2666df80782596200fca49557d757870",
"_rev": "3-99382057f6c484526835f1042753ccf2",
"type": "product",
"name": "Shirt",
"hersteller": "oska",
"price": 11.15
}
{
"_id": "2666df80782596200fca49557d758e8c",
"_rev": "1-01cc88e69e5ff30f0d011fdf61fbedbc",
"type": "product",
"name": "Pullover",
"hersteller": "acme",
"price": 7.58
}
我想查詢與_id,orderDate存儲和總和所有訂單的訂單
{
"_id": "2666df80782596200fca49557d758228",
"_rev": "2-0b4b3a8605893b60c962b8ae78f0b775",
"type": "order",
"orderDate": "01.01.2012",
"positions": [
"2666df80782596200fca49557d757870",
"2666df80782596200fca49557d758e8c"
]
}
的所有倉位價格。 我該如何解決這個問題?
例子:
[
{ "_id": "2666df80782596200fca49557d758228", "orderDate": "01.01.2012", "total": 18.73 }
]
編輯:
這個例子是由我知道,一個訂單的總不應該改變產品的價格歷史訂單更改。這是一個真正的「加入」是必要的一個壞榜樣。試想一下,當產品價格變化時,我必須改變總計。因此,我不想簡單地將總數字段歸一化。 在產品更改時「修復」訂單中的總計是可行的。但是,當我有很多不同的文檔類型引用該產品時,我需要使用某種功能逐個更改它們。 肖恩的回答把我的想法置於腦海,我可以用修改偵聽器修復非規範化字段,但每次某種文檔類型與另一個文檔類型相關時,我都需要一個偵聽器 - 聽起來像很多工作。
請參閱http:// stackoverflow。com/questions/3033443/best-way-to-do-one-to-many-join-in-couchdb – 2012-03-28 15:57:14
嗨,Ryan,感謝您的評論。我以前就知道這一點,我想我已經閱讀過任何SO線程:-) 你鏈接的是關於「一對多連接」,我要求「多對多」連接。我知道我可以在當前的couchdb版本中包含include_docs = true,這將有效地爲訂單提取相關產品,但我無法減少計算結果的總數。我沒有看到減少在這裏不起作用的原因。 – 2012-03-28 16:56:54
好吧,閱讀http://stackoverflow.com/questions/3033443/best-way-to-do-one-to-many-join-in-couchdb再次意味着它不是一個「一對多連接」,這是討論。我想我缺少的是這裏的顯示功能。我不明白爲什麼我不能使用還原:-) – 2012-03-28 17:09:42