用mongoose检查一个集合中是否存在ID

例如,我有一个集合User

 var mongoose = require('mongoose'); var UserSchema = new mongoose.Schema({ email: String, googleId: String, facebookId: String, displayName: String, active: Boolean }); module.exports = mongoose.model('User', UserSchema); 

然后我有一个ID:

 var userID = "some-user-id" 

什么是正确的方式来检查这个ID是否存在于User集合。 我不需要它来读取文件或返回它,我只需要truefalse价值。

这是实现它的一个方法:

 User.findOne({ _id: userID }, function (err, existingUser) { 

但有没有更快,更有效的方法?

使用count而不是findOne。

这将(引擎盖下)导致mongoose使用find : http : //docs.mongodb.org/manual/reference/method/db.collection.count

findOne()将读取并返回文档(如果存在find()另一方面, find()只返回一个游标(或不),并且只在遍历游标时才读取数据。 所以在我们的例子中,我们没有迭代游标,只是计算返回的结果。

 User.count({_id: userID}, function (err, count){ if(count>0){ //document exists }); } });