date - español - mongodb
Consultar documentos de CouchDB entre una fecha de inicio y una fecha de finalización (3)
He estado tratando de averiguar cómo crear una vista CouchDB que me permita consultar todos los documentos que tienen una fecha de inicio mayor que A y una fecha de finalización menor que B.
¿Es esto posible en CouchDB u otro almacén de documentos noSQL? ¿Debo descartarlo y volver a SQL?
Simplemente estoy tratando de hacer el equivalente de SQL de:
SELECCIONA * DONDE [marca de hora de inicio]> = doc.start AND [marca de hora de finalización] <doc.end;
Solo crea un mapa como este:
function (doc) {emit(doc.timestamp, 1)}
luego consulta la vista con:
?descending=true&limit=10&include_docs=true // Get the latest 10 documents
La vista se ordenará de la más antigua a la más reciente, de manera que descending=true
invierte ese orden.
Si quieres un rango específico.
?startkey="1970-01-01T00:00:00Z"&endkey="1971-01-01T00:00:00Z"
Te conseguiría todo en 1970.
Estos deberían ayudar:
Utilice la startkey
y la endkey
. De esta manera, puede decidir su intervalo de fechas en tiempo de ejecución sin ralentizar su consulta.
Utilice una clave de matriz en su función de mapa
function (doc) {
var key = [doc.start, doc.end]
emit(key, doc)
}
Luego, para obtener documentos con una fecha de inicio mayor que 1970-01-01T00: 00: 00Z y una fecha de finalización antes de 1971-01-01T00: 00: 00Z use la consulta
?startkey=["1970-01-01T00:00:00Z", ""]&endkey=["/ufff0", "1971-01-01T00:00:00Z"]