我如何在Mongoose中执行查询?

> 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" : "abc@gmail.com", "gender" : "male", "alias" : "abc", "id" : "17447214" } } 

所以这是我的Mongo对象。 现在我想通过Mongoosefind它:

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

那不行! 这也不是:

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

空,空。

这是我的全部事情:

 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 }); }); 

尝试这个 :

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

要么

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

我是mongoose的作者之一。 您可以通过以下几种方式之一来执行此查询:

  • find语法

     User.findOne({'fb.gender': 'male'}, callback); 
  • 语法的地方

     User.where('fb.gender', 'male').findOne(callback); 
  • 命名范围语法

     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);