Je suis curieux de connaître les avantages et les inconvénients de l'utilisation de sous-documents par rapport à une couche plus profonde dans mon schéma principal:
var subDoc = new Schema({
name: String
});
var mainDoc = new Schema({
names: [subDoc]
});
ou
var mainDoc = new Schema({
names: [{
name: String
}]
});
J'utilise actuellement des sous-documents partout mais je m'interroge principalement sur les problèmes de performances ou d'interrogation que je pourrais rencontrer.
javascript
node.js
mongodb
mongoose
cyberwombat
la source
la source
_id
domaine? Je veux dire, ce n'est pas un peu automatique si c'est activé?_id
champ des sous-documents est unique? (créé en utilisant la 2ème manière dans la question d'OP)Réponses:
Selon la documentation , c'est exactement la même chose. Cependant, l'utilisation d'un schéma ajouterait également un
_id
champ (tant que vous ne l'avez pas désactivé) et utilisera vraisemblablement plus de ressources pour le suivi des sous-documents.la source
Si vous avez des schémas qui sont réutilisés dans différentes parties de votre modèle, il peut être utile de définir des schémas individuels pour les documents enfants afin de ne pas avoir à vous dupliquer.
la source
Vous devez utiliser des documents incorporés s'il s'agit de documents statiques ou qui ne dépassent pas quelques centaines en raison de l'impact sur les performances. J'ai parlé de ce problème il y a un moment. Récemment, Asya Kamsky qui travaille comme architecte de solutions pour MongoDB avait écrit un article sur «l'utilisation de sous-documents».
J'espère que cela aidera à qui recherche des solutions ou les meilleures pratiques.
Article original sur http://askasya.com/post/largeembeddedarrays . Vous pouvez accéder à son profil stackoverflow sur https://stackoverflow.com/users/431012/asya-kamsky
la source
En gros, créez une variable
nestedDov
et placez-la iciname: [nestedDov]
Version simple:
Exemple JSON
Exemple:
la source
Je pense que cela est traité ailleurs par plusieurs messages sur SO.
Juste un peu:
La grande clé est qu'il n'y a pas de réponse unique ici, seulement un ensemble de compromis assez complexes.
la source
Il y a une différence entre les deux:
L'utilisation d'un schéma imbriqué est utile pour la validation.
Le schéma imbriqué peut être réutilisé dans d'autres schémas.
la source