如果数据发生变化,文档是不是会从 couchbase 视图中删除?

Posted

技术标签:

【中文标题】如果数据发生变化,文档是不是会从 couchbase 视图中删除?【英文标题】:Are documents removed from a couchbase view if the data changes?如果数据发生变化,文档是否会从 couchbase 视图中删除? 【发布时间】:2021-06-02 20:40:35 【问题描述】:

我的理解是 Couchbase 视图是增量构建的,但我似乎无法找到一个文档是否可以多次存在于视图中的答案。例如,假设我想创建一个基于 updatedAt 时间戳的视图,每次更新此文档类型时都会更改。

如果视图是增量构建的,这似乎意味着如果文档 id "1234" 被更新了几次并且 updatedAt 时间戳每次都改变了,我最终会在同一个文档的视图中有多个条目,当我想要的只是一个条目,以获得最新值。

似乎 Couchbase 将其限制为视图中任何给定文档 ID 的单个副本,但我在任何地方都找不到确切的确认。我想确保我不会为生产系统设计一些东西,而这种行为可能在小范围内可能无法正常工作。

【问题讨论】:

如果您正在设计一个新系统,需要考虑的一件事是视图是旧技术,可能会在未来版本的 Couchbase Server 中被弃用。现代的替代方法是使用 N1QL 查询。如果您将updatedAt 值存储为ISO-8601 格式,则可以在该字段上创建索引并使用日期范围查询来有效地选择在某个时间段内更新的文档。 我应该说时间戳也可以是一个数值(纪元秒等),它仍然是可索引的。 这实际上是非常好的信息 - 我们一直将视图视为影响较小的解决方案,因为似乎预先计算所有内容会带来更好的性能。我们在某些情况下使用索引,但听起来我们应该计划远离一般视图。感谢您提供的信息! 【参考方案1】:

是的。刷新视图索引时,自上次刷新以来修改的所有文档都会从视图中删除其关联的行,并再次调用 map 函数以发出新行。

单个文档可以生成多个视图行,但前提是视图的map 函数多次调用emit

【讨论】:

以上是关于如果数据发生变化,文档是不是会从 couchbase 视图中删除?的主要内容,如果未能解决你的问题,请参考以下文章

为什么V-select值会在第二次点击而不是第一次点击时发生变化?

wpf画面ListBox绑定的数据发生变化时 画面闪烁

更新此数据时自动更新数据文档

如果底层表结构发生变化,我们是不是需要重新创建物化视图

如果 dataSource 计数可能发生变化,是不是可以同时使用 reloadItemsAtIndexPaths 和 reloadData?

当嵌套字典键发生变化时,如何使用嵌套字典查询 mongodb 文档?