【问题标题】:CouchDB View that includes revision history包含修订历史的 CouchDB 视图
【发布时间】:2015-02-05 21:26:38
【问题描述】:

我对 CouchDB 很陌生。已经缺少 SQL。

无论如何,我需要创建一个视图来发出我的文档的一些属性以及所有修订 ID。

类似的东西

function(doc) {
    if (doc.type == 'template') {
        emit(doc.owner, {_id: doc._id, _rev: doc._rev, owner: doc.owner, meta: doc.meta, key: doc.key, revisions_ids: What goes here?});
    }
}

但是我如何告诉它包含所有的修订?

我知道我可以打电话 http://localhost:5984/main/94c4db9eb51f757ceab86e4a9b00cddf

对于每个文档(来自我的应用程序),但这确实不能很好地扩展。

是否有批量获取修订信息的方法?

任何帮助将不胜感激!

【问题讨论】:

    标签: couchdb


    【解决方案1】:

    CouchDB 修订版并非旨在成为版本控制系统。它们用于确保写入一致性。 (并防止在并发写入期间需要锁)

    话虽如此,只有最近的 _rev 编号对任何给定文档有用。不仅如此,数据库压缩还将删除所有旧修订。 (压缩永远不会自动运行,但应该是日常维护的一部分)

    您可能已经注意到,您的视图在您的视图输出的value 中输出最新的_rev 编号。此外,如果您使用的是include_docs=true,则查看结果的doc 部分也会显示_rev 编号。

    确实存在使用 CouchDB 记录修订历史的策略,但它们通常很复杂,通常不推荐使用。 (查看this questionthis blogpost 了解有关该主题的更多信息)

    【讨论】:

    • 感谢您让我了解这个事实。我是 Couch 的新手,并从一位离开公司的同事那里继承了一个工作系统。我认为他在设计系统时选择的方法是假设只有 1 个节点并且永远不会紧凑。
    • 我精通 oracle,并认为我可以用它重建后端,但是否有更合适的 noSQL 系统更适合跟踪版本?
    • 关于 CouchDB 不是版本控制系统的更多信息,您必须在10 Common Misconceptions about CouchDB 上观看这个针对 Couch 新人的精彩会议:第 4 点(11:05)正是关于这个问题的。 Joan Touzet 的建议:“如果您需要它,请保留它。为它创建一个新文档。不要覆盖/删除它。为每笔交易编写一个新文档。视图可以帮助您找到最新信息。 " 如果您选择继续使用 CouchDB,那么整个演示文稿绝对值得您花时间
    猜你喜欢
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多