更新设计文档时,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 更新引起的,还是通过更改数据库中的文档引起的)。
当设计文档 '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 更新引起的,还是通过更改数据库中的文档引起的)。