Sre*_*ppa 5 python couchdb composite-key
我有一个couchdb视图"record_by_date_product",其定义如下:
function(doc) {
emit([doc.logtime, doc.product_id], doc);
}
Run Code Online (Sandbox Code Playgroud)
我试图运行一个类似的查询:
(logtime > fromdate & logtime < todate) & product_id in (1,2,6)
Run Code Online (Sandbox Code Playgroud)
这种观点有可能吗?
我也使用couchdb python库来访问couchdb.这是一段代码:
server = couchdb.Server()
db = server['mydb']
results = db.view('_design/record_by_date_product/_view/record_by_date_product')
Run Code Online (Sandbox Code Playgroud)
此页面http://packages.python.org/CouchDB/client.html#viewresults指定我们可以使用startkey和endkey.但我无法让它发挥作用.
谢谢
我想我刚刚找到了确切的答案:
设计一个视图'sampleview',如:
{
"records_by_date_product": {
"map": "function(doc) {\n emit([doc.prod_id, doc.logtime], doc);\n}"
}
}
Run Code Online (Sandbox Code Playgroud)
我们假设查询参数是:
prod_id in [1,3]
from_date = '2010-01-01 00:00:00'
to_date = '2010-01-02 00:00:00'
Run Code Online (Sandbox Code Playgroud)
然后,您必须在同一视图上运行2个单独的查询:
http://localhost:5984/db/_design/sampleview/_view/records_by_date_product?startkey='\["1,2010-01-01%2000:00:00"\]'&endkey='\[1,"2010-01-02%2000:00:00"\]'
http://localhost:5984/db/_design/sampleview/_view/records_by_date_product?startkey='\[2,"2010-01-01%2000:00:00"\]'&endkey='\[2,"2010-01-02%2000:00:00"\]'
Run Code Online (Sandbox Code Playgroud)
请注意,除了在第二个查询中更改prod_id之外,每次都运行相同的查询.结果必须在以后整理.希望这可以帮助!