Wie können Daten, die in MongoDB eingefügt oder aktualisiert werden, am besten validiert werden? Ist es eine Art von Server geschrieben Code ausgeführt, der die Validierung durchführt?Was ist der beste Weg, Daten in Mongo zu validieren?
Antwort
Ich denke, es wäre normal, dass Ihre App mit so etwas fertig wird. Wenn die Daten in irgendeiner Weise ungültig sind, lassen Sie sie nicht zum Datenspeicher hinzugefügt werden, bis der Benutzer den von Ihnen gefundenen Fehler korrigiert hat.
MongoDB hat keine Einschränkungen oder Trigger, daher muss die Anwendung die Daten validieren.
Sie können auch Javascript-Skripte schreiben, die einmal pro Tag oder mehr überprüfen, wenn ungültige Daten vorhanden sind. Sie können damit die Qualität der Geschäftslogik Ihrer Anwendung überprüfen.
Ich habe gerade angefangen, MongoDB und PHP zusammen in einer Zend Framework basierten Anwendung zu verwenden.
Ich habe 1 Objekt für jede MongoDB Sammlung erstellt (z. B. User.php entspricht der Benutzersammlung). Jedes Objekt weiß, welcher Sammlung es zugeordnet ist und welche Felder benötigt werden. Es weiß auch, welche Filter (Zend_Filter_Input) und Validatoren (Zend_Validate) auf jedes Feld angewendet werden sollten. Bevor Sie MongoDB insert() oder save() ausführen, führe ich $ object-> isValid() aus, wodurch alle Validatoren ausgeführt werden. Wenn sie alle bestehen, wird isValid() true zurückgeben, und ich fahre fort, um die insert() oder save() auszuführen, sonst zeige ich die Fehler an.
Ab Version 2.4 ermöglicht MongoDB die grundlegende BSON-Objektvalidierung für mongod und mongorestore beim Schreiben in MongoDB-Datendateien. Dies verhindert, dass ein Client ungültige oder fehlerhafte BSON in eine MongoDB-Datenbank einfügt. Quelle: http://docs.mongodb.org/manual/release-notes/2.4/
von Ab MongoDB 3.2 sie hinzugefügt document validation (slides).
Sie können Validierungsregeln für jede Sammlung angeben, mit validator Option fast alles Mongo Abfrage Operatoren (außer $geoNear
, $near
, $nearSphere
, $text
und $where
).
Um eine neue Kollektion mit einem Prüfer zu erstellen, verwenden Sie:
db.createCollection("your_coll", {
validator: { `your validation query` }
})
Um einen Validator zur bestehenden Sammlung hinzufügen, können Sie den Validator hinzufügen:
db.createCollection("your_coll", {
validator: { `your validation query` }
})
Validierung nur auf dem Einsatz arbeiten/Wenn Sie einen Validator für Ihre alte Sammlung erstellen, werden die vorherigen Daten nicht validiert (Sie können eine Validierung auf Anwendungsebene für vorherige Daten schreiben). Sie können auch validationLevel und validationAction angeben, um festzustellen, was passiert, wenn das Dokument die Validierung nicht besteht.
Wenn Sie versuchen, das Dokument mit etwas einzufügen/zu aktualisieren, das die Validierung nicht besteht (und keine merkwürdige validationLevel/action angegeben haben), erhalten Sie einen Fehler unter writeResult
(leider sagt der Fehler nicht, was fehlgeschlagen ist und Sie nur die Standard validation failed
erhalten):
WriteResult({
"nInserted" : 0,
"writeError" : {
"code" : 121,
"errmsg" : "Document failed validation"
}
})
- 1. Was ist der beste Weg, um vorberechnete Daten zu implementieren?
- 2. Was ist der beste Weg, Daten auf Firebase zu strukturieren?
- 3. Was ist der beste Weg zu
- 4. Was ist der beste Weg
- 5. Was ist der beste Weg, Tabellendaten in Python zu schreiben?
- 6. Was ist der beste Weg, Datumsunterschied in Javascript zu berechnen
- 7. Was ist der richtige Weg, Mongo mit MongoJS zu verbinden?
- 8. Was ist der beste Weg, um Daten mit Java Swing
- 9. was der beste Weg
- 10. Was ist der beste Weg, HTML in Excel zu konvertieren
- 11. Was ist der beste Weg, Ränge in MYSQL zu generieren?
- 12. Was ist der beste Weg, um in C++ zu casten?
- 13. Was ist der beste Weg, remote.origin.url in Git zu ersetzen?
- 14. Was ist der beste Weg, Programme in Windows zu vergleichen?
- 15. Was ist der beste Weg, HTML in Python zu verarbeiten?
- 16. Was ist der beste Weg, EventDispatcher in EntityRepository zu injizieren?
- 17. Was ist der beste Weg, QUERY_STRING in PHP zu verwalten?
- 18. Was ist der beste Weg, Konfigurationsvariablen in PHP zu speichern?
- 19. Was ist der beste Weg, Ports in PM2 zu setzen?
- 20. Was ist der beste Weg, Namenskonflikte in Javascript zu lösen?
- 21. Was ist der beste Weg, Ausnahmen in Perl zu behandeln?
- 22. Was ist der beste Weg, Crystal Reports zu verbreiten?
- 23. Der beste Weg, csv Daten zu konvertieren
- 24. Was ist der beste Weg, XML aus den Daten in der Datenbank zu generieren?
- 25. Was ist der beste Weg, um Code zu organisieren?
- 26. Was ist der beste Weg, um XLS-Datei in PHP
- 27. Was ist der beste Weg, Performance-Probleme zu debuggen?
- 28. Was ist der beste Weg, eine Sprache neu zu lernen?
- 29. Was ist der beste Weg, eine Prozedur "verzögert" zu nennen?
- 30. Was ist der beste Weg, "Controller" -Klassen zu laden/auszuwählen
[Mongo 3.2] (http://stackoverflow.com/a/33602507/1090562) wird die Validierung haben. –