Wie fragt man mongodb nach der Länge eines bestimmten Strings / Textfelds? Zusätzlich wie würden Sie die maximale Länge eines Abfrage-Sets finden?
Leider unterstützt das Aggregations-Framework einen "len" -Operator nicht, um Strings automatisch in ihre Länge zu konvertieren während Sie eine Abfrage durchführen. Also musst du das in deinem eigenen Code lösen. Du könntest
Der Unterschied zwischen diesen Methoden besteht darin, dass die erste auf der Datenbank ausgeführt wird, während die zweite auf Ihrem Anwendungsserver ausgeführt wird. Ich würde die letztere Option empfehlen, da MapReduce sehr langsam und mühsam sein kann.
Sky ist das Limit! Nein, tatsächlich ist es 16 MB
für ein Dokument in mongodb
. Dies kann die maximale Länge einer Zeichenfolge in den Datensätzen sein.
Um die maximale Länge in einem Abfrage-Set zu finden, können Sie dies umgehen:
Im Gegensatz zu SQL kennt MongoDB die Länge von Feldern als solche nicht wirklich. Es weiß höchstens, wenn es indiziert, dass das Feld entweder unter 1024 Bytes ist oder nicht.
Als solches müssen Sie wahrscheinlich die Client-Seite reparieren. Du könntest hier ein $where
verwenden, aber ich denke, dass du das falsch ansiehst, wenn du das machen willst.
Du könntest auch MR benutzen, wie @Philipp sagt, aber du schaust hier wahrscheinlich wieder in die falsche Sache.
Eine Abfrage in MongoDB ist in der Tat ein BSON-Dokument. Daher ist die maximale Länge eines Abfrage-Sets (abhängig davon, was Sie als "Abfrage-Set" definieren) immer 16 MB (im Moment).
Viele Treiber bieten eine Möglichkeit, um eine Struktur (Hash oder Dict oder was auch immer) in BSON zu codieren, so dass Sie die Länge der codierten Zeichenfolge beurteilen können, um die Größe Ihrer Abfrage zu verstehen.
Tags und Links mongodb