如何使用mongoose从集合中选择随机文档

时间:2016-12-13 12:27:00

标签: node.js mongodb mongoose

我有一个案例,我需要使用mongoose

从集合中只选择一个文档

在mongo shell中我们将其用作

db.user.find().limit(1)

{
"_id": "56fc22f625311b661becefb5",
“activities”: [...],
"lastName": “patrick”,
"firstName": "John”,
"city": “Chennai”,
"state": “TAMILNADU”,
"rollnumber": "123456789"
}

如何使用mongoose,我必须只选择像rolenumber这样的特定字段,不是所有的字段

我试了一下

var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/connector', function(err){
if(err) throw err
});
var Schema = mongoose.Schema;
var userSchema = new Schema({rollnumber : Number});
module.exports = mongoose.model('user', userSchema,'user');
var a = user.find().limit(1);
return a;

1 个答案:

答案 0 :(得分:0)

正如Mongoose文档所说(http://mongoosejs.com/docs/queries.html):

  

任何涉及指定查询条件的模型方法都可以   执行两种方式:
  当回调函数时:
   - 传递,操作将立即执行,结果传递给回调    - 未传递,返回Query实例,该实例提供特殊的查询构建器界面。

所以我建议你尝试使用回调函数来尝试这样的事情:

let user = mongoose.model('user', userSchema);
module.exports = user;    

user.find({}, 'rolenumber state')
    .limit(1)
    .exec((err, a) => {
        if (err) console.log(err);
        return a;
    });

您不确定随机方面的问题。