更新现有文档字段而不丢失 Couch DB 中的旧文档数据

Kar*_*hik 7 javascript database couchdb nosql pouchdb

这是我的 Couch DB 文档

{"people": [{"id": 1,"dept_id": 1,"user": "A",},{"id": 2,"dept_id": 1,"user": "B",},{"id": 3,"dept_id": 1,"user: "C",}]}
Run Code Online (Sandbox Code Playgroud)

用户 A 在 pouch DB 中将他的 dept_id 更改为 3

{"people": [{"id": 1,"dept_id": 3,"user": "A",},{"id":2 ,"dept_id": 1,"user": "B",},{"id": 3,"dept_id": 1,"user": "C",}]}
Run Code Online (Sandbox Code Playgroud)

用户 B 在 pouch DB 中将他的 dept_id 更改为 4

{"people": [{"id": 1,"dept_id": 1,"user": "A"},{"id":2 ,"dept_id": 4,"user": "B"},{"id": 3,"dept_id": 1,"user": "C"}]}
Run Code Online (Sandbox Code Playgroud)

如果 A 和 B 将数据复制到 Couch DB ,则 Couch 文档更新为

{"people": [{"id": 1,"dept_id": 1,"user": "A"},{"id":2 ,"dept_id": 4,"user": "B"}, {"id": 3,"dept_id": 1,"user": "C"}]}

但我预期的输出

{"people": [{"id": 1,"dept_id": 3,"user": "A"},{"id":2 ,"dept_id": 4,"user": "B"}, {"id": 3,"dept_id": 1,"user": "C"}]}

我试过这个来更新小袋 Db

var mydb = new PouchDB('localPouchDb',{revs_limit: 1, auto_compaction: true});db.upsert('people ', function myDeltaFunction(doc) { doc.dept_id=4  return doc;}).then(function () {  console.log('success')}).catch(function (err) { console.log(err)});
Run Code Online (Sandbox Code Playgroud)

我试过用这个来复制带袋子的沙发 Db

var remoteDB = new PouchDB('remote address',{revs_limit: 1, auto_compaction: true});db.replicate.to(remoteDB);
Run Code Online (Sandbox Code Playgroud)

我搜索了一些链接,他们说

无法更新单个字段,复制用 pouch db 替换整个文档

https://www.tutorialspoint.com/couchdb/couchdb_updating_a_document.htm

如何在 couchdb 中更新文档的记录/字段

小智 1

你做不到。因为 CouchDb 允许将数据保存为 JSON 记录。所以最后更新的记录将添加到 couchDB 中。

如果您想针对特定功能执行此操作,请将其作为单独的文档