présumant que vous avez une définition de modèle pour Product
en fonction de la définition ProductSchema
alors la syntaxe générale est pas très différente d'une requête standard MongoDB .find()
:
var categoryId; // As whatever the desired value of the ObjectId is
Product.find({ "categories._id": categoryId }, function(err,product) {
// Work with found document or err object here
});
Donc ceci est juste une « notation de points » simple forme de la requête afin de référencer l'élément de sous-document.
Bien sûr, votre structure de schéma semble également être basé sur embedded documents ce qui signifie que vous devriez être en mesure d'accéder à l'une des autres propriétés de ce schéma ainsi:
Product.find({ "categories.name": "category name" }, function(err,product) {
// Work with found document or err object here
});
Pour les solutions qui ont les CategorySchema
objets Au sein de leur propre collection de modèles, il y a aussi la méthode .poulate()
qui fournit une alternative efficace, sinon tout aussi efficace, à l'intégration là où l'intégration n'est pas pratique.