【问题标题】:How do I perform a query in Mongoose?如何在 Mongoose 中执行查询?
【发布时间】:2017-10-23 20:35:14
【问题描述】:
> 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 对象。现在我想通过 Mongoose 找到它:

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 定义在哪里?

标签: javascript mongodb node.js mongoose


【解决方案1】:

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

  • find 语法

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

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

【讨论】:

【解决方案2】:

试试这个:

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

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

【讨论】:

  • 谢谢!你知道为什么我运行它时会出现这个错误吗? :调试:TypeError:无法读取 HTTPServer 上未定义的属性“auth”。
  • 不知道,我根本没有用过NodeJs,我根据我的mongodb javascript经验给出了查询。
  • 确实回答了fb.gender查询的问题。 TIMEX 在他的评论中提出了另一个问题。
猜你喜欢
  • 2017-07-21
  • 2011-08-14
  • 2014-01-09
  • 2018-05-24
  • 2016-05-07
  • 2012-10-24
  • 2021-11-26
  • 2017-07-09
  • 1970-01-01
相关资源
最近更新 更多