我在CouchDB中有一个数据库,我想知道是否可以直接从python创建一个视图,而不是使用GUI。我是CouchDB的初学者,我需要一个与SQL中的SELECT DISTINCT等效的函数和一个视图,如
function (doc) {
if(doc.MovieId == "1254")
emit(doc.Rating, 1);
}
问题是我必须为更多的MovieId
(来自键盘输入)创建这个视图。
我问你是否可以直接从python创建/删除这样的视图,因为在网上我什么都没找到。如果不可能,我自己做一个Mango查询和Map结果是个好主意吗?
---编辑---
json_data = {
"_id": "_design/titaRat",
"_rev": "3-ceb11154b13457c55b1f98f4e9d15b03",
"views": {
"titRat": {
"map": "function (doc) { var id_prefix = \"ratings :\"; if(doc._id.substr(0, id_prefix.length) === id_prefix && doc.MovieId == \"1721\") emit(doc.Rating, 1);}",
"reduce": "_count"
}
},
"language": "javascript",
"options": {
"partitioned": False
}
}
db.save(json_data)
ResourceConflict: ('conflict', 'Document update conflict.')
出现此错误,但没有具有此名称文档
2条答案
按热度按时间nuypyhwy1#
我有一个函数:
呼叫示例如下:
cx6n0qe32#
你可以从python中创建一个视图,就像你在couch db中创建任何文档一样。
不同之处在于,您需要创建设计文档。
函数的文档如下所示:
正如你所看到的,map函数被保存为一个字符串。如果你想添加格式,你需要添加它,例如
\n
和\t
。要保存此文档,您需要将其
POST
到POST /{db}/_design/movie_ratings_ddoc
然后可以通过
GET /{db}/_design/movie_rations_ddoc/_view/movie_ratings_view
调用视图每个设计文档可以保存多个视图。
如果要删除视图,可以删除整个设计文档,也可以仅更新设计文档,使视图从对象中删除.
有关如何使用视图的详细信息,请参阅:https://docs.couchdb.org/en/master/api/ddoc/views.html