是否可以获得所有冲突的列表?
Is it possible to get a list of all conflicts?
我正在处理一些冲突解决方案,我正在 运行 通过一个包含大量冲突的测试数据库。我正在寻找一种方法来观察冲突的燃烧情况,以验证我的脚本是否正常工作。
有没有办法检索所有有冲突的文档 ID 的列表?
我尝试了 https://server/db/_all_docs?include_docs=true&conflicts=true
之类的东西,但是这 returns 一切,无论是否冲突。我只想要有冲突的文档的 ID,理想情况下我不需要冲突版本本身,只需要文档 ID。
这可能吗?
我的另一个想法,一个更加手动的过程,是编写一个脚本来获取所有文档,然后遍历所有文档,使用 get 命令获取冲突,然后将它们全部记录下来。
这就是我最终做的,效果很好。如果没有脚本就很好。
<?php
ini_set('memory_limit', '-1');
$username = 'test';
$password = 'test';
$couchServer = 'server';
$dbName = 'db';
$couchDb = new CouchDB($username, $password, $couchServer, 5100);
//getAllDocuments returns the results of this command
//https://server/db/_all_docs?include_docs=true&conflicts=true
$results = $couchDb->getAllDocuments($dbName);
//get all the documents with conflicts
$filteredResults = array_filter($results->rows, function ($value) {
return isset($value->doc->_conflicts) && count($value->doc->_conflicts) > 0;
});
//convert the class to assoc array
$encodedResults=json_decode(json_encode($filteredResults),true);
//use array column to get all the Ids
$docIds=array_column($encodedResults, "id");
var_dump($docIds);
CouchDB: The Definitive Guide规定的方法是创建一个视图函数,例如:
function(doc) {
if(doc._conflicts) {
emit(doc._conflicts, null);
}
}
我正在处理一些冲突解决方案,我正在 运行 通过一个包含大量冲突的测试数据库。我正在寻找一种方法来观察冲突的燃烧情况,以验证我的脚本是否正常工作。 有没有办法检索所有有冲突的文档 ID 的列表?
我尝试了 https://server/db/_all_docs?include_docs=true&conflicts=true
之类的东西,但是这 returns 一切,无论是否冲突。我只想要有冲突的文档的 ID,理想情况下我不需要冲突版本本身,只需要文档 ID。
这可能吗?
我的另一个想法,一个更加手动的过程,是编写一个脚本来获取所有文档,然后遍历所有文档,使用 get 命令获取冲突,然后将它们全部记录下来。
这就是我最终做的,效果很好。如果没有脚本就很好。
<?php
ini_set('memory_limit', '-1');
$username = 'test';
$password = 'test';
$couchServer = 'server';
$dbName = 'db';
$couchDb = new CouchDB($username, $password, $couchServer, 5100);
//getAllDocuments returns the results of this command
//https://server/db/_all_docs?include_docs=true&conflicts=true
$results = $couchDb->getAllDocuments($dbName);
//get all the documents with conflicts
$filteredResults = array_filter($results->rows, function ($value) {
return isset($value->doc->_conflicts) && count($value->doc->_conflicts) > 0;
});
//convert the class to assoc array
$encodedResults=json_decode(json_encode($filteredResults),true);
//use array column to get all the Ids
$docIds=array_column($encodedResults, "id");
var_dump($docIds);
CouchDB: The Definitive Guide规定的方法是创建一个视图函数,例如:
function(doc) {
if(doc._conflicts) {
emit(doc._conflicts, null);
}
}