2011-11-07 3 views
1

Hmmm Je ne sais pas comment indiquer clairement le titre. J'espère que l'explication suivante sera meilleure.Comment "trouver" une collection et comparer une valeur avec son objet interne dans MongoDB?

J'ai un schéma comme ça:

company = new Schema { 
    name: String, 
    contact: {} 
} 

Par exemple:

{ 
    name:'cnn' 
    contact: { 
     address:'whatever', 
     phone1: '1-800-123-1234', 
     url: 'cnn.com' 
    } 
} 

Quand je fais une découverte (ou findOne), je peux le faire ..

db.company.findOne({name:'cnn'}); 

Et si je veux rechercher la valeur dans le 'contact'?

par exemple. recherche record avec url = « cnn.com »

ou pour savoir quels documents a la clé « url » dans « contact »

Répondre

4

Pour rechercher un sous-clé, vous venez de donner le chemin du clé délimitée par des périodes.

db.company.findOne({"contact.url": "cnn.com"}) 

Pour savoir quels documents ont une URL de contact:

db.company.findOne({"contact.url": {$ne: null}}) 

Notez que ces requêtes seront des scans de collecte, sauf si vous créez un index pour la sous-clé demandé. Utilisez judicieusement.

+0

Aaah .. Pas étonnant. J'utilise contact.url mais sans le devis. et j'ai essayé de contacter: {url: 'cnn.com'} .. ah .. pas étonnant .. merci. :) – murvinlai

Questions connexes