MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Mongo _id pour le tableau de sous-documents

Je suppose :

{
    g: [
        { _id: ObjectId(), property: '' },
        // next
    ]
}

Type de structure pour cette question.

Pas normalement. _id s sont des identifiants uniques pour les entités. En tant que tel, si vous cherchez à ajouter _id dans un objet de sous-document, vous n'avez peut-être pas très bien normalisé vos données et cela pourrait être le signe d'un défaut fondamental dans la conception de votre schéma.

Les sous-documents sont conçus pour contenir des données répétitives pour ce document, c'est-à-dire les adresses ou un utilisateur ou quelque chose.

Cela étant dit _id n'est pas toujours une mauvaise chose à ajouter. Prenons l'exemple que je viens d'énoncer avec les adresses. Imaginez que vous deviez avoir un système de panier d'achat et (pour une raison quelconque) vous n'avez pas répliqué l'adresse sur le document de commande, vous utiliseriez alors un _id ou un autre identifiant pour sortir ce sous-document.

Vous devez également prendre en considération les liens entre les documents. Si ce _id décrit un autre document et les propriétés sont des attributs personnalisés pour ce document par rapport à ce document lié, alors ça va aussi.

Un ObjectId est encore assez important, c'est donc quelque chose à prendre en considération par rapport à un identifiant plus petit et moins unique ou à ne pas utiliser un _id du tout pour les sous-documents.

Pour les index, cela ne fonctionne pas vraiment différemment du _id standard sur le document lui-même et un index unique sur le champ devrait fonctionner sur toute la collection (selon le scénario, testez vos requêtes).

NB :MongoDB n'ajoutera pas de _id aux sous-documents pour vous.