Mongo. wie um zu überprüfen, ob Feld ist eine Zahl
Wie Sie mongodb Dokumente wo-Feld ist eine Zahl?
Einige Beispiele für die Inhalte dieses Feldes: "2", "a", "Z", 3
- Eine Methode ist die Verwendung
$type
:db.col.find({Z: {$type:16}})
- Ja, ich habe es versucht, aber ich dachte, es sollte eine andere Lösung.
- Hmm, ich war gonna sagen, regex, aber das kann nur wissen, wenn der string/int ist eine Zahl, die es nicht wissen, ob es eine Daten-Typ string oder int
- Ich denke, das problem wird viel einfacher, wenn wir der Ansicht-Feld ist die Länge = 1 (oder eine Ziffer)
- Ok können diese brechen, ich bin verwirrt, warum $type wird nicht funktionieren, vielleicht ich bin dumm; Sie geben ein vollständiges Beispiel?
- weil "4" und 4 sind unterschiedlicher Art
- Aber Sie wollen, dass Sie beide abgestimmt? Wenn Sie so kalt regex es
{field: /^[0-9]+$/}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie die $type operator wählen Sie basierend auf dem BSON-Typ des Feldes, das sollte Sie bekommen, was Sie wollen.
So, zum Beispiel, um herauszufinden, alle Streicher:
Oder finden Sie alle verdoppelt (die ist in der Regel, was zahlen so gespeichert, wie Sie von der shell durch die Standard-Javascript-Verhalten), die Sie verwenden würden:
Da gibt es zwei Arten von integer (potenziell) müssten Sie gehen mit so etwas wie dies:
Schließlich dann alle zahlen, integer oder double:
Können Sie den Typ eines Feldes
bar
mithilfehttp://docs.mongodb.org/manual/core/shell-types/#check-types-in-shell
können Sie das alias "Anzahl" statt:
typeof
im mongo zurückobject
fürarray
Typ auch. Um zu überprüfen, ob ein Feld ist eineNumber
führen Sie folgenden Abfrage, um zu sehen, wenn es gibt kein Ergebnis.db.foo.find('Object.prototype.toString.call(this.bar) === "[object Number]"')
Können Sie auch sehen https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/toString