2014-06-24 1 views
0

i avoir les dossiers de collecte suivants:mongodb trouver tous les enregistrements avec id sous-document est égal à

> db.products.find(ObjectId("53a9a6aad901f2961403fc9b")).pretty() 
{ 
    "_id" : ObjectId("53a9a6aad901f2961403fc9b"), 
    "code" : "N39", 
    "name" : { 
     "en-UK" : "N39" 
    }, 
    "weight" : [ 
     90 
    ], 
    "collectionId" : ObjectId("53a9a6a8d901f2961403fbe2"), 
    "fabric_composition" : [ 
     { 
      "fabricId" : ObjectId("53a9a6a9d901f2961403fc69"), 
      "value" : 70 
     } 
     { 
      "fabricId" : ObjectId("53a9a6a9d901f2961403fc6a"), 
      "value" : 30 
     } 
    ], 
    "visible" : "true", 
    "manufacturer" : "53a859d9d901f2e8f81ac83b" 
} 

et

> db.fabric.find().pretty() 
{ 
    "_id" : ObjectId("53a9a6a9d901f2961403fc69"), 
    "name" : [ 
     { 
      "en-UK" : "Recycled Organic Cotton" 
     } 
    ] 
} 
{ 
    "_id" : ObjectId("53a9a6a9d901f2961403fc6a"), 
    "name" : [ 
     { 
      "en-UK" : "Recycled Polyester" 
     } 
    ] 
} 

Comment puis-je interroger la collection mongodb products à la liste tous les produits qui ont un fabric_composition avec ObjectId pour Recycled Organic Cotton comme exemple?

des conseils très appréciés

Répondre

2

Vous devez utiliser une utilisation dot notation pour interroger: sous-documents

db.products.find({ 
    "fabric_composition.fabricId" : ObjectId("53a9a6a9d901f2961403fc69") 
}); 

Cette requête renverra tous les documents qui ont au moins un sous-document avec fabricId vous cherchez .

Questions connexes