2

我正在尝试在 couchDB 文档中添加(又名。推送到现有数组)。非常感谢任何反馈。

我的数据库中有一个名为“调查”的文档,名为“ database1 ”。我将“调查”作为一组数组,其中包含有关每个调查的信息的对象。

我的目标是更新我的“调查”文件。不替换我的数组,而是向现有数组添加一个新对象。我使用过“ nano-couchdb ”和“ node-couchdb ”,但找不到解决方法。我能够更新我的“调查”,但它会替换整个事情,而不是将现有对象保留在数组中。

1)使用纳米沙发:

db.insert({ _id, name }, "survey", function (error, resp) { 
  if(!error) { console.log("it worked")
  } else { 
  console.log("sad panda")} 
})

2)使用沙发节点:

couch.update("database1", {  
  _id: "survey", 
  _rev:"2-29b3a6b2c3a032ed7d02261d9913737f", 
  surveys: { _id: name name: name } 
)

这些适用于向数据库添加新文档,但不适用于向现有文档添加内容。

    {
      "_id": "survey",
      "_rev": "2-29b3a6b2c3a032ed7d02261d9913737f",
      "surveys": [
        {
          "_id": "1",
          "name": "Chris"
        },
        {
          "_id": "2",
          "name": "Bob"
        },
        {
          "_id": "1",
          "name": "Nick"
        }
        ]
    }

我希望我的请求能够正常工作

"surveys.push({_id:"4",name:"harris"}) 

每当新数据进入本文档时。

4

1 回答 1

0

您的数据模型应该得到改进。在 CouchDB 中,创建一个巨大的“调查”文档没有多大意义,而是将每个调查存储为一个单独的文档。如果您需要所有调查,只需为此创建一个视图。如果您使用 CouchDB 2.0,您还可以通过 Mango 查询调查文档。

您的文档可能如下所示:

{
  "_id": "survey.1",
  "type": "survey",
  "name": "Chris"
}

你的地图功能看起来像这样:

function (doc) {
  if (doc.type === 'survey') emit(doc._id);
}

假设您将此视图保存为设计文档“_design/documentLists”中的“调查”,您可以通过http://localhost:5984/database1/_design/documentLists/_view/surveys查询它。

于 2017-03-10T20:18:50.167 回答