Mi documento se ve así

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

Solo quiero eliminar 7 de la matriz user_id. ¿Puedo lograrlo en couchDb? Quiero resultado como

{
 "_id": "9e3f079f072cb3e03d146774fd003238",
 "_rev": "1-ebf2242794ad0e4fa70ca263db4a3aad",
 "user_id": [
  1,
  2,
  3,
  4,
  5,
  6
 ]
}
-3
Lokesh Jain 19 feb. 2018 a las 13:30

2 respuestas

La mejor respuesta

Según entiendo su pregunta, lo que está preguntando es si puede eliminar selectivamente un elemento dentro de una matriz. La única forma de lograr esto es obtener primero el documento completo, luego eliminar el elemento del lado del cliente y enviar una nueva revisión de todo el documento, pasando el _rev del documento que leyó:

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 tal como está actualmente no permite "parchear" documentos existentes, pero requiere que siempre proporcione todo el cuerpo al actualizar los documentos.

1
xpqz 19 feb. 2018 a las 11:52

Por supuesto. Simplemente PONGA la nueva versión del documento, como documentado.

1
Flimzy 19 feb. 2018 a las 11:11