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

Comment sélectionner un sous-document mongo par identifiant avec mongoose?

Selon notre discussion, nous avons trouvé la cause première en

db.locations.update({ name: 'Starcups' }, 
                    { $push: { 
                         reviews: { 
                            author: 'Simon Holmes', 
                            id: ObjectId(), // issue is here
                            rating: 5, ... } } })

id: ObjectId() va créer id champ dans le sous-document et sans _id dans le champ reviews sous-document.

id() la méthode est utilisée pour documentArrays avoir un id spécial méthode pour rechercher un document par son _id . Puisqu'il n'y a pas de _id champ dans reviews tableau de documents, cela ne fonctionne pas bien.

Veuillez supprimer id: ObjectId() à partir de votre code.