2011-04-28 19 views
10
> db.users.findOne(); 
{ 
    "_id" : ObjectId("4db8ebb4c693ec0363000001"), 
    "fb" : { 
     "name" : { 
      "last" : "Sss", 
      "first" : "Fss", 
      "full" : "Fss" 
     }, 
     "updatedTime" : "2011-04-27T09:51:01+0000", 
     "verified" : true, 
     "locale" : "en_US", 
     "timezone" : "-7", 
     "email" : "[email protected]", 
     "gender" : "male", 
     "alias" : "abc", 

     "id" : "17447214" 
    } 
} 

Así que ese es mi objeto Mongo. Ahora quiero encontrarlo a través de Mongoose:¿Cómo realizo una consulta en Mongoose?

User.findOne({ gender: "male" }, function(err, docs){ 
    console.log(err); //returns Null 
    console.log(docs); //returns Null. 
}); 

Eso no funciona! Tampoco lo hace:

User.findOne({ fb: {gender:"male"} }, function... 

nulo, nulo.

Ésta es toda mi cosa:

app.get('/:uid',function(req,res){ 
    params = {} 
    User.findOne({ $where : "this.fb.gender == 'male' " }, function(err, docs){ 
     console.log(docs); 
    }); 
    res.render('user', { locals:params }); 
}); 
+0

¿Dónde se define 'Usuario'? – Gobliins

Respuesta

7

Prueba esto:

User.findOne({ $where : "this.fb.gender == 'male' " }) 

o

User.findOne({ fb.gender : "male" }) 
+0

¡Gracias! ¿Sabes por qué obtengo este error cuando lo ejecuto? : DEPURACIÓN: TypeError: no se puede leer la propiedad 'auth' de indefinido en HTTPServer. TIMEX

+0

no tengo idea, no he usado NodeJs en absoluto, di la consulta en función de mi experiencia en javascript de mongodb. – DhruvPathak

+0

No parece que esta es la respuesta, sin embargo, es aceptado. –

43

Soy uno de los autores de la mangosta. Usted puede hacer esta consulta en una de varias maneras:

  • find sintaxis

    User.findOne({'fb.gender': 'male'}, callback); 
    
  • where sintaxis

    User.where('fb.gender', 'male').findOne(callback); 
    
  • sintaxis ámbito con nombre

    UserSchema.namedscope('male').where('fb.gender', 'male'); 
    // ... 
    var User = mongoose.model('User', UserSchema); 
    
    // Now you can write queries even more succinctly and idiomatically 
    User.male.findOne(callback); 
    
+1

namedScope se ha eliminado de Mongoose, pero creé un complemento que lo imita: https://github.com/gberger/mongoose-named-scopes – gberger

Cuestiones relacionadas