Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在couchdb的Javascript查询中嵌入JSON_Javascript_Json_Couchdb - Fatal编程技术网

在couchdb的Javascript查询中嵌入JSON

在couchdb的Javascript查询中嵌入JSON,javascript,json,couchdb,Javascript,Json,Couchdb,我有一个大约有一百万行的CouchDB数据库。我希望使用外部json中的键查询数据库中的特定行。 以下是我现在为完成这项任务所做的工作: for i in test_json: view = ViewDefinition('state', state_name.lower(),"""{function (doc){ if(doc._id == """+i+"""){ emit(doc._id,[doc

我有一个大约有一百万行的CouchDB数据库。我希望使用外部json中的键查询数据库中的特定行。 以下是我现在为完成这项任务所做的工作:

for i in test_json:
                view = ViewDefinition('state', state_name.lower(),"""{function (doc){
                if(doc._id == """+i+"""){
                emit(doc._id,[doc.user_location,doc.user_project_links])
                  }}}""")
                view.sync(db)
                db.commit()
但这会为从json到查询的每个输入创建一个单独的视图

所以我的问题是:
是否有一种方法可以解析Couchdb中javascript查询中的json,以便最终创建一个视图?

您不应该每次都创建新视图。这是CouchDB的优点-保存的视图被索引并执行得非常快。如果您在数百万个文档(不是行,这不是RDBMS)上创建新视图,则需要时间对它们进行索引。 您应该在CouchDB中创建一次视图,例如通过Futon。 视图的映射函数应如下所示:

function(doc) {
  emit(doc._id, [doc.user_location,doc.user_project_links])
}
接下来,您可以通过向查询传递键来查询数据库。您可以传递单个键:{key=value},多个键:{key:{…}},或者使用
startkey
endkey
参数。这些键将根据emit语句中的键进行筛选,在本例中为doc.\u id

请看这里:

另外,请记住,如果需要访问文档的多个字段,最好将文档从视图中排除,并在视图的查询中使用
include\u docs=true
。您将始终在响应中拥有密钥和文档id,因此y也可以使用后者来检索文档。发出的值实际上是视图的一部分,并占用额外的磁盘空间

希望这有帮助