2011-01-23 9 views
7

Ho un oggetto JSON nidificato per la chiave stato di seguito:Ordinamento date in CouchDB Visualizzazioni

{
"2011-01-19 09:41:00 AM": "Prototyping status application",
"2011-01-20 09:41:00 AM": "Playing with CouchDB"
}

Si tratta di una piccola applicazione dove l'utente può entrare nella sua/il suo stato. Voglio ottenere lo stato più recente da esso. Questo approccio è buono per tali applicazioni o devo avere una chiave che definisca l'ordinamento?

Qual è il modo migliore per ottenere la data più recente?

Grazie

risposta

14

Usa view collation ed emettere una chiave complessa.

Se si desidera innanzitutto ordinare per utente, quindi per ora, utilizzare questo come chiave. Se si desidera solo ordinare per volta, omettere il nome utente come chiave.

Se stai usando i valori di data-style:

emit([Date.parse(doc.created_at).getTime(), doc.username], doc); 

Se si utilizza un formato di data che è già ordinabile lexicographically:

emit([doc.created_at, doc.username], doc); 
+0

Grazie mille, proprio quello che volevo. – saint

+0

Pensi che sia un buon design per mantenere uno stato come questo? – saint

+0

Probabilmente preferirei aggiungere un nuovo documento per ogni stato. Ciò porterà a più documenti, ma tende a prevenire i conflitti e consentire una progettazione scalabile con stati 'coerenti'. Ogni documento che deve contenere almeno il messaggio di stato, l'utente, l'ora e i metadati interni che potresti eventualmente richiedere. –