如何仅复制Couchbase Mobile中某些通道的交集

时间:2016-02-24 08:49:41

标签: couchbase database-replication couchbase-lite channels couchbase-sync-gateway

我的应用程序中有四个通道:A,B,C,D。某些应用程序用户只对通道A和B 中包含的文档感兴趣。也可以表示为:A ∩ B ∩ D。其他人可能对不同的组合感兴趣,例如:Console.WriteLine($"{((decimal)capsCount/e.message.Replace(" ", string.Empty).Length).ToString("0.00%")} is caps.");

更新

我认为以下内容无论如何都不会起作用

到目前为止所建议的是,我可以为每个组合创建一个新频道(如A_B和A_B_D),然后相应地标记符合相交标准的文档。但是你可以看到这很容易失控,因为只有4个频道,你最终会得到15种组合(11个额外频道)。

有没有办法用频道或者我在Couchbase中遗漏的其他功能来做到这一点?

1 个答案:

答案 0 :(得分:0)

通过同步功能完成对文档的通道分配。所以文件不是包含在内的#34;在一个通道中,它可能具有可以从中导出其路由的通道的属性。只有在最简单的默认情况下,文档的通道属性才会将其路由到具有该属性值的通道。

所以你可以通过添加像

这样的语句来实现
if (doc.areas.includes("A") && doc.areas.includes("B") {
   channel("AB");
}

进入同步功能。 (我将频道属性重命名为区域,以便向节目的读者说明这些不是实际频道,但这些频道仅来自它们的组合。)