从CouchDB中的数组中删除值

时间:2018-02-19 10:30:46

标签: couchdb

我的文档看起来像这样

|            DATE_FROM |              DATE_TO |
|----------------------|----------------------|
| 2018-02-14T00:00:00Z | 2018-03-18T00:00:00Z |
| 2018-05-01T00:00:00Z | 2018-06-30T00:00:00Z |
| 2018-08-01T00:00:00Z | 2018-09-08T00:00:00Z |

我只想从user_id数组中删除7。我可以在couchDb中实现吗?我想要像

这样的结果
{
 "_id": "9e3f079f072cb3e03d146774fd003238",
 "_rev": "1-ebf2242794ad0e4fa70ca263db4a3aad",
 "user_id": [
  1,
  2,
  3,
  4,
  5,
  6,
  7
 ]
}

2 个答案:

答案 0 :(得分:1)

当然。您只需将新版本文档投放为documented

答案 1 :(得分:1)

据我了解你的问题,你要问的是你是否可以有选择地删除数组中的项目。实现这一目标的唯一方法是首先获取整个文档,然后删除项目客户端,并推送整个文档的新版本,传入您阅读的文档的_rev:

curl 'http://..../database/9e3f079f072cb3e03d146774fd003238'
{
  "_id": "9e3f079f072cb3e03d146774fd003238",
  "_rev": "1-ebf2242794ad0e4fa70ca263db4a3aad",
  "user_id": [1,2,3,4,5,6,7]
}

curl -XPUT -H "Content-Type: application/json" 
     -d  '{
            "_id": "9e3f079f072cb3e03d146774fd003238",
            "_rev": "1-ebf2242794ad0e4fa70ca263db4a3aad",
            "user_id": [1,2,3,4,5,6]
          }'

{
  "ok":true,
  "id":"9e3f079f072cb3e03d146774fd003238",
  "rev":"2-88d05ac5ef997d68d11dbafc8d07c933"
}

目前的CouchDB不允许修补'现有文件,但要求您在更新文件时始终提供全身。