批量更新文档
Updating documents in bulk
我正在使用 PouchDB 在浏览器中存储一些文档,我有一个对象集合,我设法 db.put,现在我需要 "update" 它们,但无需手动放置 _rev 参数。我知道 _rev 参数是必需的,但我想只是将更新的对象存储为新文档,因为我认为它的开销较小。
我的问题是,我怎样才能获取所有文档并只获取每个文档的一个(最新)推送文档。我在考虑给它们加上时间戳,但我不想依赖它。任何方向将不胜感激。
您可以使用更新处理程序更新单个文档而无需修订。
https://docs.couchdb.org/en/latest/ddocs/ddocs.html?#update-functions
正在更新多个文档以检索最新的
可以使用时间戳或版本号更新多个文档:
要获取最新的文档版本,您可以编写一个视图并将其缩小以显示最大值:
您的实施可能如下所示:
// Your documents
// PUT #1
{
_id: "test_doc_[timestamp],
doc_id: "test_doc",
doctype: "book",
timestamp: [timestamp],
payload: "lorem ipsum"
}
// PUT #2
{
_id: "test_doc_[timestamp + n],
doc_id: "test_doc",
doctype: "book",
timestamp: [timestamp + n],
payload: "dolor sit amet"
}
获取一份文档的最新版本
要获取最新版本的 'test_doc',您可以使用 _all_docs
下面的请求所做的是查询以您的文档 ID 开头的所有文档,对它们进行降序排序,并且 returns 您是最新的顶级数据集。
GET /db/_all_docs?start_key="test_doc_"&end_key="test_doc_\ufff0"&descending=true&limit=1
正在获取许多文档的最新版本
要获取许多文档的最新版本,您可以编写一个视图,然后将其缩减:
// view not formated so that it can be used directly
{
"_id": "_design/books",
"views": {
"newest": {
"reduce": "function (key, values, rereduce) {\r\n return Math.max.apply({}, values);\r\n}",
"map": "function (doc) {\n if(doc.doctype === \"book\")\n emit(doc.doc_id, doc.timestamp);\n}"
}
},
"language": "javascript"
}
您可以调用视图:
GET /db/_design/books/_view/newest?descending=true&reduce=true&group=true
来源:
https://docs.couchdb.org/en/latest/ddocs/ddocs.html?#map-functions
How to calculate Max value using Map-Reduce in CouchDB?
我正在使用 PouchDB 在浏览器中存储一些文档,我有一个对象集合,我设法 db.put,现在我需要 "update" 它们,但无需手动放置 _rev 参数。我知道 _rev 参数是必需的,但我想只是将更新的对象存储为新文档,因为我认为它的开销较小。 我的问题是,我怎样才能获取所有文档并只获取每个文档的一个(最新)推送文档。我在考虑给它们加上时间戳,但我不想依赖它。任何方向将不胜感激。
您可以使用更新处理程序更新单个文档而无需修订。 https://docs.couchdb.org/en/latest/ddocs/ddocs.html?#update-functions
正在更新多个文档以检索最新的
可以使用时间戳或版本号更新多个文档:
要获取最新的文档版本,您可以编写一个视图并将其缩小以显示最大值:
您的实施可能如下所示:
// Your documents
// PUT #1
{
_id: "test_doc_[timestamp],
doc_id: "test_doc",
doctype: "book",
timestamp: [timestamp],
payload: "lorem ipsum"
}
// PUT #2
{
_id: "test_doc_[timestamp + n],
doc_id: "test_doc",
doctype: "book",
timestamp: [timestamp + n],
payload: "dolor sit amet"
}
获取一份文档的最新版本
要获取最新版本的 'test_doc',您可以使用 _all_docs 下面的请求所做的是查询以您的文档 ID 开头的所有文档,对它们进行降序排序,并且 returns 您是最新的顶级数据集。
GET /db/_all_docs?start_key="test_doc_"&end_key="test_doc_\ufff0"&descending=true&limit=1
正在获取许多文档的最新版本
要获取许多文档的最新版本,您可以编写一个视图,然后将其缩减:
// view not formated so that it can be used directly
{
"_id": "_design/books",
"views": {
"newest": {
"reduce": "function (key, values, rereduce) {\r\n return Math.max.apply({}, values);\r\n}",
"map": "function (doc) {\n if(doc.doctype === \"book\")\n emit(doc.doc_id, doc.timestamp);\n}"
}
},
"language": "javascript"
}
您可以调用视图:
GET /db/_design/books/_view/newest?descending=true&reduce=true&group=true
来源:
https://docs.couchdb.org/en/latest/ddocs/ddocs.html?#map-functions
How to calculate Max value using Map-Reduce in CouchDB?