我试图在couchDB文档中添加(也就是推送到现有数组)。 非常感谢任何反馈。
我有一份名为" survey "在我的数据库中名为" database1 "。 我有" 调查"作为一组数组,由包含每个调查信息的对象组成。
我的目标是更新我的" 调查"文献。不替换我的数组,而是向现有数组添加新对象。我已经使用了" nano-couchdb "和" node-couchdb ",但无法找到解决方法。我能够更新我的" 调查",但它会取代整个事情,而不是将现有对象保留在数组中。
1)使用Nano-couchdb:
db.insert({ _id, name }, "survey", function (error, resp) {
if(!error) { console.log("it worked")
} else {
console.log("sad panda")}
})
2)使用couchdb-node:
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"})
每当有新数据进入本文档时。
答案 0 :(得分:0)
应该改进您的数据模型。在CouchDB中,创建一个巨大的调查"并不是很有意义。文档,而是将每个调查存储为单独的文档。如果您需要所有调查,只需create a view for this。如果您使用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进行查询。