Quel est le meilleur moyen de valider les données insérées ou mises à jour dans MongoDB? Est-ce d'écrire une sorte de code JavaScript exécuté serveur qui fait la validation? P>
6 Réponses :
Je pense qu'il serait normal que votre application gère ce genre de chose. Si les données sont invalides d'une certaine manière, ne le laissez pas être ajouté au magasin de données jusqu'à ce que l'utilisateur a corrigé l'erreur que vous avez détectée. P>
MongoDB n'a pas de contraintes ni de déclencheurs, l'application doit donc valider les données. p>
Vous pouvez également écrire des scripts JavaScript qui vérifient une fois par jour ou plus s'il y a des données non valides. Vous pouvez utiliser ceci pour vérifier la qualité de la logique commerciale de votre application. p>
Je viens de commencer à utiliser Mongodb et PHP ensemble, à l'intérieur d'une application basée sur le cadre Zend. P>
J'ai créé 1 objet pour chaque collection MongoDB (E.G. User.PHP Maps à la collection utilisateur). Chaque objet sait quelle collecte mappe et quels champs sont nécessaires. Il sait également quels filtres ( zend_filter_input ) et validateurs ( zend_validate ) doit être appliqué à chaque champ. Avant de faire un insert MongoDB () ou Save (), je gère $ objet-> isvalid (), qui exécute tous les validateurs. Si elles passent tous Isvalid () reviendront true, et je procède à l'insertion () ou à enregistrer (), sinon j'affiche les erreurs. P>
À partir de 2.4, MongoDB permet une validation d'objet BSON de base pour Mongod et Mongorestore lors de l'écriture sur les fichiers de données MongoDB. Cela empêche tout client d'insérer un BSON invalide ou mal formé dans une base de données MongoDB. Source: http://docs.mongodb.org/manual/release-notes/2.4/ p>
à partir de Vous pouvez spécifier la validation Règles pour chaque collection, utilisant Validator Option en utilisant presque tous les opérateurs de requête Mongo (Sauf Pour créer une nouvelle collection avec un validateur, utilisez: p> pour ajouter un validateur à la collection existante, vous pouvez ajouter le VALIDATEUR: P> $ geonear code>,
$ proche de code>,
$ procheSphere code>,
$ texte code> et code>). p>
WriteResult({
"nInserted" : 0,
"writeError" : {
"code" : 121,
"errmsg" : "Document failed validation"
}
})
Démarrer mongodb 3.6 Vous pouvez également utiliser JSON SCHEMA pour exprimer Règles de validation a >. Ces chèques se produiront sur le côté de la base de données sur insertion / mise à jour. Voici un exemple de la DOCS: P> db.runCommand( {
collMod: "collectionName",
validator: validator
} )
Mongo 3.2 aura une validation.