CouchDB查询以获取具有最大时间戳的文档

问题描述 投票:0回答:1

我的CouchDB文档格式如下,根据价格变化,可以有多个product_idstore_id相同的文档>

{ "_id": "6b645d3b173b4776db38eb9fe6014a4c", "_rev": "1-86a1d9f0af09beaa38b6fbc3095f06a8", "product_id": "6b645d3b173b4776db38eb9fe60148ab", "store_id": "0364e82c13b66325ee86f99f53049d39", "price": "12000", "currency": "AUD_$", "time": 1579000390326 }

并且我需要获取给定的documenttime最新

product_id(由store_id-时间戳记

为此,使用当前的解决方案,我必须执行以下两个查询;

  1. 要获取最新的时间戳。返回给定product_idstore_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);}" }

  2. 基于最新的timestamp,我再次查询以具有以下三个参数的文档来获取文档:store_idproduct_idtime

  3. "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 -...

mapreduce max couchdb couchapp
1个回答
0
投票
使用CouchDB的/db/_find,您可以将sort结果和limit结果降序到一个文档,如下所示:
© www.soinside.com 2019 - 2024. All rights reserved.