2013-01-29 2 views
0

Je joue avec MongoDB avec mongoose et arrive à un léger roadblock atm essayant d'implémenter la recherche dans les objets d'une collection.Recherche dans les objets à l'intérieur des collections mongo

J'ai donc un schéma qui est la suivante:

var schema = mongoose.Schema({ 
    form_id: Number, 
    author: Number, 
    data: String, 
    files: String, 
    date: { type: Date, default: Date.now }, 
}); 

Le data est juste un objet JSON de valeurs clés /.

Un exemple d'entrée d'un enregistrement:

{ 
"form_id" : 5, 
"author" : 1, 
"data" : " 
    {\"staff\":\"Joe Blow\", \"date\":\"25th Jan 2013\"}", 
"_id" : ObjectId("5101fd4ee6ca550000000003"), 
"date" : ISODate("2013-01-25T03:34:38.377Z"), 
"__v" : 0 
} 

Comment rechercher une valeur spécifique dans l'objet de données? Je suis en train de faire quelque chose comme ce qui suit, mais ne pas avoir de chance :(

db.forms.find({form_id: 5, data: '/Joe/i'}); 

Répondre

2

Si vous omettez les guillemets simples autour de l'expression régulière, il devrait fonctionner:

db.forms.find({form_id: 5, data: /Joe/i}); 

Mais êtes-vous sûr que vous veulent data contenir une chaîne JSON au lieu d'un objet? un objet vous donnera beaucoup plus de flexibilité.

0

peut-être vous voulez que cela?

db.forms.find({form_id: 5, "data.staff": /Joe/i}); 

si votre propriété 'data' des formulaires est un objet. et c'est bien mieux.

Questions connexes