2011-01-23 6 views
7

J'ai un objet JSON imbriqué pour la clé état ci-dessous:Tri des dates dans CouchDB Vues

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

Il est une petite application où l'utilisateur peut entrer dans sa/son statut. Je veux connaître le statut le plus récent. Cette approche est-elle bonne pour de telles applications, ou dois-je avoir une clé qui définit l'ordre de tri?

Quelle est la meilleure façon d'obtenir la date la plus récente?

Merci

Répondre

14

Utilisez view collation et émettront une clé complexe.

Si vous voulez d'abord trier par utilisateur, puis par heure, utilisez-le comme clé. Si vous voulez seulement trier par temps, omettez le nom d'utilisateur comme clé.

Si vous utilisez des valeurs de style Date:

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

Si vous utilisez un format de date qui est déjà triables lexicographique:

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

Merci beaucoup, tout ce que je voulais. – saint

+0

Pensez-vous que c'est un bon design pour garder des statuts comme celui-ci? – saint

+0

Je préférerais probablement ajouter un nouveau document pour chaque statut. Cela conduira à plus de documents, mais aura tendance à prévenir les conflits et à permettre une conception scalabale avec des statuts «éventuellement cohérents». Chaque document doit contenir au moins le message d'état, l'utilisateur, l'heure et les métadonnées internes dont vous pourriez avoir besoin. –