MST

星途 面试题库

面试题:CouchDB中文档嵌套数据的更新操作

在CouchDB中有一个文档,包含用户信息及该用户参与的项目列表,项目又有子任务列表。文档结构如下:{"_id":"user1","username":"Alice","projects":[{"project_name":"proj1","sub_tasks":[{"task_name":"task1","status":"in progress"},{"task_name":"task2","status":"not started"}]}]}。现在要将proj1项目中task2的状态更新为"in progress",请描述实现这个更新操作的完整步骤,包括可能用到的CouchDB API 。
29.8万 热度难度
数据库CouchDB

知识考点

AI 面试

面试题答案

一键面试
  1. 获取文档
    • 使用CouchDB的GET API获取包含用户信息的文档。假设CouchDB运行在本地,端口为5984,数据库名为users,则请求URL为http://localhost:5984/users/user1
    • 这个请求会返回整个文档,包含用户信息及项目列表。
  2. 更新文档内容
    • 在代码中解析获取到的文档(例如在Python中使用json模块解析JSON格式的文档)。
    • 遍历projects列表,找到project_nameproj1的项目。
    • 在该项目的sub_tasks列表中,找到task_nametask2的子任务,并将其status更新为"in progress"
  3. 保存更新后的文档
    • CouchDB使用PUT API来保存更新后的文档。在更新文档时,需要包含文档的_rev字段,这个字段在第一步获取文档时会一同返回。
    • 假设更新后的文档数据存储在变量updated_doc中,请求URL为http://localhost:5984/users/user1,请求体为updated_doc,并且要在请求头中设置Content - Type: application/json。通过这个PUT请求,CouchDB会保存更新后的文档,完成任务状态的更新。