我的CouchDB文档格式如下,根据价格变化,可以有多个product_id
和store_id
相同的文档>
{
"_id": "6b645d3b173b4776db38eb9fe6014a4c",
"_rev": "1-86a1d9f0af09beaa38b6fbc3095f06a8",
"product_id": "6b645d3b173b4776db38eb9fe60148ab",
"store_id": "0364e82c13b66325ee86f99f53049d39",
"price": "12000",
"currency": "AUD_$",
"time": 1579000390326
}
并且我需要获取给定的document
和time
的最新
product_id
(由store_id
-时间戳记为此,使用当前的解决方案,我必须执行以下两个查询;
要获取最新的时间戳。返回给定product_id
和store_id
"max_time_by_product_store_id": {
"reduce": "function(keys, values) {var ids = []
values.forEach(function(time) {
if (!isNaN(time)){
ids.push(time);
}
});
return Math.max.apply(Math, ids)
}",
"map": "function (doc) {emit([doc.store_id, doc.product_id], doc.time);}"
}
基于最新的timestamp
,我再次查询以具有以下三个参数的文档来获取文档:store_id
,product_id
和time
,
"store_product_time": {
"map": "function (doc) {
emit([doc.store_id, doc.product_id, doc.time]);
}"
}
这对我来说非常有效,但是我的问题是我需要执行两个数据库查询才能获取文档,并寻找一种在一个数据库查询中获取文档的解决方案。
在CouchDB中,选择器也无法通过MAX值获取文档。
我的CouchDB文档格式如下,根据价格变化,可以有多个具有相同product_id和store_id {“ _id”:“ 6b645d3b173b4776db38eb9fe6014a4c”,“ _ rev”:“ 1 -...