View Couchbase:是否可以创建;加入;透过沙发看风景?

View Couchbase:是否可以创建;加入;透过沙发看风景?,view,key,parent-child,couchbase,View,Key,Parent Child,Couchbase,我目前正在开发一个网站,使用Couchbase作为数据库管理器。 在我的数据中,我有具有父子关系的对象。出于逻辑上的原因,在我的应用程序中,这更方便(逻辑上更正确),因为家长会知道所有的孩子(通过包含ID数组),而不是像在沙发上一样相反。 是否可以创建一个视图,通过查询父id返回该对象的所有子对象? 视图冲突是不可能的,因为子视图没有父视图id。那么在视图的映射函数中是否有使用其他视图的方法?还是参考自己的观点?或者,一个复杂的reduce函数可能会有所帮助,或者两阶段视图,首先获取子ID,然后

我目前正在开发一个网站,使用Couchbase作为数据库管理器。 在我的数据中,我有具有父子关系的对象。出于逻辑上的原因,在我的应用程序中,这更方便(逻辑上更正确),因为家长会知道所有的孩子(通过包含ID数组),而不是像在沙发上一样相反。
是否可以创建一个视图,通过查询父id返回该对象的所有子对象?

视图冲突是不可能的,因为子视图没有父视图id。那么在视图的映射函数中是否有使用其他视图的方法?还是参考自己的观点?或者,一个复杂的reduce函数可能会有所帮助,或者两阶段视图,首先获取子ID,然后查询视图,如果可能的话,类似于couchbase内部函数。

在couchbase 2.2中,您的问题中描述的请求的功能是不可能的。正如我最近发布的,您需要执行多视图查询来构建结果集(这没什么大不了的,因为couchbase中的查询速度非常快)

另外,我应该指出,视图不应该包含整个对象(这将完全违背视图的目的)。因此,您的体系结构根本不需要视图,您可以查询父对象的CB,父对象包含子对象的所有文档id。如果需要子对象,则需要查询它们


顺便说一句,我很高兴CB不支持您的请求,因为它可能会因为过度考虑设计而导致对平台的滥用。必须脱掉你的SQL server帽子-CB中的多个查询是最佳的和首选的

由于许多原因,您不能嵌套视图,也不能引用其他视图。但是,通过使用文档中的信息并通过单个映射函数处理它们,您可以将文档整理在一起并模拟连接。在我们的文档中,您可以在此处阅读:

让我知道,如果你需要的话,我可以给你进一步的指导

此外,在文档中有双向引用也并不少见。因此,您可以将父id放入子文档中。当然,如果这种关系发生变化,您还必须更新它们。此外,您还可以拥有兄弟姐妹,添加了应用程序功能,可以在所有兄弟姐妹中更改兄弟姐妹列表(如果信息发生更改)。与人类一样,子文档也可以有多个父文档,当然,您可以同时引用这两个父文档


当然,就像@scalabilitysolved所说的,如果你知道父对象,你就可以多获取子对象数组,甚至不需要视图,除非你必须通过各种JSON属性而不是键本身来搜索父对象。

如果你有父对象键,并且父对象有子对象ID,为什么你不能对那些身份证进行多重检查?