用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
集合。 我不需要它来读取文件或返回它,我只需要true
或false
价值。
这是实现它的一个方法:
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 }); } });