--- Revision None +++ Revision 656434343666 @@ -0,0 +1,53 @@ +{ +_id: "AssemblyA", +type: "Assembly" +} + +Then you might also have: + +{ +_id: "ObjectA", +"type" : "part" +"what": "gadget", +usedIn: [ + "AssemblyA", + "AssemblyB" + ] +} +{ +_id:"ObjectB", +"what":"widget", +"usedIn": [ + "AssemblyA", + "AssembyC" + ] +} +etc. + +and +{ +_id:"toolA", +"type": "tool" +"what":"screwdriver", +"usedIn":[ + "AssemblyA" + ] +} +etc. + +Then, in your map function, (this is pseudocode, I didn't actually test it!) + +if (type == "Assembly") { emit ([doc._id,'assembly',nil],null); } +if (type == "tool" || type == "part") { + forEach (asm in doc.usedIn) { + emit([asm,doc.type,0],null); + } +} + +That will get you +['AssemblyA','assembly',nil] +['ObjectA','part',0] +['ObjectB','part',0] +['ToolA','tool',0] + +If you do a query on startkey=['AssemblyA']&endkey['AssemblyA',{}]