更新设计文档时,CouchDB 是否会无条件重建索引?

Does CouchDB unconditionally rebuild indices when design docs are updated?

当设计文档 'updated' 未对其 map 或 reduce 函数进行任何更改时,CouchDB 会重建索引吗?

EG,下面的代码会导致数据库重新索引5次吗,

const db = new pouch('some-database-url');
const ddoc = {
  _id: '_design/findStuff',
  views: {
    'findStuff': {
      map: `function(doc) { 
             if (doc._id.indexOf('stuff') === 0) {
               emit(doc._id, doc);
             }
            }`
          }
  }
}
    
for (let i=0; i<5; i++) {
  db.get(ddoc._id).then( d => {
    db.put( {
      ...ddoc,
      _rev: d._rev
    })
  })
}

或者 CouchDB 是否会与以前的版本进行比较并决定不打扰?

我不是很清楚如何测试它,因为重新索引是一个后台进程,我不知道如何检查它的状态,而且它会产生相同的内置索引。

是的……但不完全是。

更改 ddoc 上的 rev 会触发索引重建,但重建发生在读取时,而不是更新时。

也就是说,索引更新发生在第一次查询索引时,在更改之后(无论该更改是由 ddoc 更新引起的,还是通过更改数据库中的文档引起的)。