trier mongodb documents par date (en desc de commande)

J'ai un tas de documents dans mongodb et tous ont un champ d'horodatage avec le timestamp stocké comme "1404008160". Je veux tous les documents dans cette collection par le desc de commande. Je le fais par:

sort = [('timestamp', DESCENDING)]
collection.find(limit=10).sort(sort)

Cependant, je ne suis pas d'obtenir des résultats triés par timestamp desc commande. Je pense que c'est parce que l'horodatage est traité comme un champ int. Est-il un travail autour de ce sans changement de type de données de champ timestamp. J'ai déjà beaucoup de données dans cette collection, donc ne veulent pas passer par les tracas de l'import/export, etc.

Aussi - je veux rester à la charge du tri mongodb plutôt que de le faire par programmation en python.

Pour être clair: Timestamp ne pas indiquer le moment où le document a été créé et est stocké sous forme de chaîne de caractères (par exemple "1404217646").

Merci à l'avance.

  • Je suppose que vous avez importé les constantes qui serait autrement être représenté comme pymongo.DESCENDING. Mais c'est vraiment juste une constante pour -1 afin de rendre la lecture plus facile. Comme un int n'a plus d'importance que les valeurs de l'ordre de cette façon. Peut-être sont en fait ces chaînes? Sens, ne les citations "" apparaissent lorsque vous regardez les données dans le shell?
  • oui - les citations ne s'affiche - si le timestamp est stocké comme une chaîne de caractères.. et je suis à la recherche d'une solution sans changer de type de données de ce champ dans toutes les docs
  • Il n'est pas vraiment une solution de contournement. Alors même que les chaînes de ce qui devrait encore trier correctement les valeurs sont lexicale. Sauf si bien sûr certains sont des chiffres et certains sont des chaînes de caractères, ce qui va poser un problème. Si vous êtes à la recherche d'un moyen pour MongoDB à "jeter" des valeurs, qui ne va pas se produire, en dehors de la chaîne de hackery, mais qui ne serait pas efficace. Vous avez vraiment besoin de changer le type. Meilleure forme est comme un BFILS date, qui vient de l'interne stocke la valeur du timestamp, mais sera automatiquement converti que les dates dans votre programme.
  • bien j'ai fini la reconstruction de tous les docs
InformationsquelleAutor jisu | 2014-07-01