Qual è il modo migliore per convalidare i dati inseriti o aggiornati in MongoDB? È scrivere una sorta di codice Javascript eseguito dal server che esegue la convalida?Qual è il modo migliore per convalidare i dati in mongo?
risposta
Penso che sarebbe normale che la tua app gestisca questo genere di cose. Se i dati non sono validi in qualche modo, non lasciare che vengano aggiunti all'archivio dati finché l'utente non ha corretto qualsiasi errore rilevato.
MongoDB non ha vincoli o trigger, quindi l'applicazione deve convalidare i dati.
È anche possibile scrivere script Javascript che controllano una volta al giorno o più se ci sono dati non validi. È possibile utilizzarlo per verificare la qualità della business logic della propria applicazione.
Ho appena iniziato a utilizzare MongoDB e PHP insieme, all'interno di un'applicazione basata su Zend Framework.
Ho creato 1 oggetto per ogni raccolta MongoDB (ad esempio, User.php esegue il mapping alla raccolta utenti). Ogni oggetto sa a quale raccolta è mappata e quali campi sono richiesti. Sa anche quali filtri (Zend_Filter_Input) e validatori (Zend_Validate) devono essere applicati a ciascun campo. Prima di eseguire un inserimento MongoDB() o save(), eseguo $ object-> isValid(), che esegue tutti i validatori. Se passano tutti isValid() restituirà true, e procedo per eseguire l'insert() o save(), altrimenti visualizzerò gli errori.
A partire da 2.4, MongoDB abilita la convalida dell'oggetto BSON di base per mongod e mongorestore durante la scrittura in file di dati MongoDB. Ciò impedisce a qualsiasi client di inserire BSON non valido o non valido in un database MongoDB. fonte: http://docs.mongodb.org/manual/release-notes/2.4/
A partire da MongoDB 3.2 hanno aggiunto document validation (slides).
È possibile specificare le regole di validazione per ogni collezione, utilizzando validator opzione utilizzando quasi tutti gli operatori di query Mongo (tranne $geoNear
, $near
, $nearSphere
, $text
, e $where
).
Per creare una nuova collezione con un validatore, utilizzare:
db.createCollection("your_coll", {
validator: { `your validation query` }
})
Per aggiungere un validatore alla collezione esistente, è possibile aggiungere il validatore:
db.createCollection("your_coll", {
validator: { `your validation query` }
})
convalida funzionano solo su inserimento/aggiornamento, quindi quando crei un validatore sulla tua vecchia raccolta, i dati precedenti non verranno convalidati (puoi scrivere la convalida a livello di applicazione per un dato precedente). È inoltre possibile specificare validationLevel e validationAction per indicare cosa accadrà se il documento non supera la convalida.
Se si tenta di inserire/aggiornare il documento con qualcosa che non riesce la convalida, (e non hanno specificato alcun strano validationLevel/azione) allora si verificherà un errore su writeResult
(purtroppo l'errore non ti dice cosa non è riuscito e si ottiene solo di default validation failed
):
WriteResult({
"nInserted" : 0,
"writeError" : {
"code" : 121,
"errmsg" : "Document failed validation"
}
})
- 1. Qual è il modo migliore per eseguire Map/Reduce su dati da Mongo?
- 2. WebClient è il modo migliore per scaricare i dati http?
- 3. Il modo migliore per salvare i dati in un'applicazione Java?
- 4. Qual è il modo migliore per salvare i dati localmente in un'applicazione WPF?
- 5. Qual è il modo migliore per duplicare i dati in un modello django?
- 6. qual è il modo migliore per indicizzare i dati da Oracle/tabelle relazionali in ricerca elastica?
- 7. Qual è il modo migliore per aprire i dati di origine (anziché il codice)?
- 8. Qual è il modo migliore per strutturare i dati su Firebase?
- 9. Qual è il modo migliore per scrivere commenti in C?
- 10. Qual è il modo migliore per aggiornare i dati sottostanti di un adapter?
- 11. Qual è il modo migliore per salvare i dati XML su SQL Server?
- 12. Il modo migliore per memorizzare i dati gerarchici in hbase
- 13. Il modo migliore per registrare i dati POST in Apache?
- 14. Il modo migliore per memorizzare i dati in BoltDB
- 15. Qual è il modo migliore per sincronizzare grandi quantità di dati in tutto il mondo?
- 16. Qual è il modo migliore per convertire enum in stringa?
- 17. Qual è il modo migliore per creare frecce in inkscape?
- 18. Qual è il modo migliore per convertire String in ByteString
- 19. Qual è il modo migliore per analizzare questo in C++?
- 20. Qual è il modo migliore per aggiornare l'entità in JPA
- 21. Qual è il modo migliore per ritagliare un'immagine in HTML?
- 22. Qual è il modo migliore per testare un'app per rails?
- 23. Qual è il modo migliore per rilevare il colore bianco?
- 24. Convalidare JSON da Mongo?
- 25. Bisogno modo migliore per riassumere i dati
- 26. Android: qual è il modo migliore per archiviare dati JSON offline per l'app in Android?
- 27. Qual è il modo migliore per comunicare tra due server?
- 28. Qual è il modo migliore per implementare i servizi in background per un'applicazione ASP.NET?
- 29. Qual è il modo migliore per riutilizzare il parser Lua?
- 30. Qual è il modo migliore per documentare il codice f #?
[Mongo 3.2] (http://stackoverflow.com/a/33602507/1090562) avrà la convalida. –