如何在Mongoose中执行查询?

TIM*_*MEX 10 javascript mongoose mongodb node.js

> 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"
    }
}
Run Code Online (Sandbox Code Playgroud)

这就是我的Mongo对象.现在我想通过Mongoose找到它:

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

那不行!这也不是:

User.findOne( { fb: {gender:"male"} }, function...
Run Code Online (Sandbox Code Playgroud)

空,null.

这是我的全部事情:

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 });
});
Run Code Online (Sandbox Code Playgroud)

Bri*_*chi 46

我是猫鼬的作者之一.您可以通过以下几种方式之一进行此查询:


Dhr*_*hak 8

试试这个 :

User.findOne( { $where : "this.fb.gender == 'male' " } )
Run Code Online (Sandbox Code Playgroud)

要么

User.findOne( { fb.gender : "male" } )
Run Code Online (Sandbox Code Playgroud)