首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用couchdb-python处理嵌套对象

使用couchdb-python处理嵌套对象
EN

Stack Overflow用户
提问于 2019-02-08 20:47:03
回答 1查看 196关注 0票数 1

免责声明: Python和CouchDB对我来说都是新的。到目前为止,我的“编程”主要由Bash脚本组成。

我正在尝试创建一个小脚本来更新CouchDB数据库中的对象。然而,对象不是由我的脚本创建的,而是由一个名为Tap Forms的应用程序创建的,该应用程序使用CouchDB进行同步。基本上,我试图自动更新应用程序的内容。这也意味着我不能真正影响CouchDB中对象的结构或名称。

数据库中大部分都是这种结构的对象:

代码语言:javascript
复制
{
  "_id": "rec-3b17...",
  "_rev": "21-cdf6...",
  "values": {
    "fld-c3d4...": 4,
    "fld-1def...": 1000000000000,
    "fld-bb44...": 760000000000,
    "fld-a44f...": "admin,name",
    "fld-5fc0...": "SSD",
    "fld-642c...": true,
  },
  "deviceName": "MacBook Air",
  "dateModified": "2019-02-08T14:47:06.051Z",
  "dateCreated": "2019-02-08T11:33:00.018Z",
  "type": "frm-7ff3...",
  "dbID": "db-1435...",
  "form": "frm-7ff3..."
}

为了提高可读性,我稍微缩短了一些数字,并删除了一些条目。

现在,我试图更新的实际值在"values" : {...}数组中(或对象或列表,猜测我对JSON也没有多少经验)。正如我所知道的一些值,我设法创建了在服务器上查找对象的_id的视图。然后,我使用python模块,如文档中所述:

代码语言:javascript
复制
for item in db.view('CustomViews/test2', key="GENERIC"):
    doc = db[item.id]

这给了我这个东西。但是,我想更新值数组中的一个值,比如fld-c3d4...。但是怎么做呢?使用doc['values'] = 'new_value'更新整个数组。我尝试了其他(看似合乎逻辑的)方式,如doc['values['fld-c3d4']'] = 'new_value',但我无法将我的头脑围绕它。我在任何文档中都找不到一个例子。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-09 19:45:35

下面是一个如何更新fld-c3d4的示例。

您的文档用嵌套字典表示字典。

如果您想获得值,您将执行如下操作:

代码语言:javascript
复制
values = doc['values']

现在,变量值指向文档中的值。

从那里,您可以访问一个子值:

代码语言:javascript
复制
values['fld-c3d4'] = 'new value'

如果您想直接更新文档中的值,只需链接这些操作:

代码语言:javascript
复制
doc['values']['fld-c3d4'] = 'new value'
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54599940

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档