Mongo Sortieren von string-Wert, der ist eigentlich die Nummer
Habe ich die Sammlung enthält Objekte wie diese:
{
"_id" : ObjectId("57f00cf47958af95dca29c0c"),
"id" : "...",
"threadId" : "...",
"ownerEmail" : "...@...",
"labelIds" : [
...
],
"snippet" : "...",
"historyId" : "35699995",
"internalDate" : "1422773000000",
"headers" : {
"from" : "...@...",
"subject" : "....",
"to" : "...@..."
},
"contents" : {
"html" : "...."
}
}
Beim Zugriff auf Objekte, die ich will, um Sie zu Sortieren durch iternalDate Wert, der eigentlich integer sein, aber es ist ein string. Gibt es eine Möglichkeit Sie zu Sortieren, wenn das abrufen auch wenn diese strings? Durch die alphabetische Reihenfolge? Oder gibt es eine Möglichkeit, Sie zu konvertieren integer schmerzfrei?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Scheint es mir, dass die beste Lösung hier wäre zu analysieren, ist es zunächst als eine ganze Zahl. Sie könnten es tun, mit einem einfachen Skript in javascript, wie dieses, die mongodb-client für Knoten:
Sortierung, was Sie brauchen...
können Sie auch die aggregate-Methode zu Sortieren-Nummer, die tatsächlich ein string ist.
wenn Sie mit Mungo-paginate-Paket für Server-Side-Paginierung .. also nicht dieses package verwenden, verwenden Sie nur Mungo-paginate-v2 für serverside Paginierung. dieses Paket nodejs Seite
Hatte ich dieses Problem. Ich die Verwendung von string-Länge Sortieren zuerst und dann anwenden, das meine Art von numerischer Wert gespeichert, wie ein string. z.B. "1", "100", "20", "3" das sortiert werden soll, wie 1, 3, 29, 100.
Es ist ein neues feature in der version 4.0, genannt $toInt, die verwendet werden können, um zu analysieren, Ihren string und dann Sortieren. In meinem Fall kann ich nicht ein upgrade von 3.6.
$strLenCP
hat nichts zu tun mit der Frage. Was gefragt ist, ist die Sortierung etwas wie"123"
als mehr als"4"
, die als "string" ist eigentlich nicht wahr, aber es wäre numerisch. Das ist nicht das, was$strLenCP
( die gibt den Länge der Zeichenfolge ) eigentlich nicht. Der link in der Antwort ist genauer als das code-Beispiel.Dies ist meine Lösung und es funktionierte für mich