我想知道如何检查mongodb中的集合内容。 我在下面描述的函数在db中插入用户,如果用户名存在,我会在插入之前检查。
exports.adduser = function(db) {
return function(req, res) {
var userName = req.body.username;
var userEmail = req.body.useremail;
var userCod = req.body.usercod;
var collection = db.get('usercollection');
collection.insert({
'username' : userName,
'email' : userEmail,
'cod' : userCod
}, function (err, doc) {
if (err) {
res.send('There was a problem adding the information to the database.');
}
else {
res.location('userlist');
res.redirect('userlist');
}
});
}
}
答案 0 :(得分:0)
var collection = db.get('usercollection');
collection.count({username:username}, function(err, count){
if(err){
return callback(err);
}
if(count > 0){
return callback('User already exists!');
}
//do your insert operation
});
答案 1 :(得分:0)
我不知道蹲下了node.js,但MongoDB中的查找在Collection对象上是find()和findOne()。假设您的用户名足以使记录唯一,“检查是否存在”看起来像
if ( collection.findOne( { "username" : userName } ) != null ) {
println("username " + userName + " exists!" );
}
答案 2 :(得分:0)
显而易见的方法是在username
上添加unique index,这样可以确保您无法插入重复项。
错误处理逻辑类似于您在问题描述中概述的内容。如果已存在username
,则在尝试插入时会出现异常,err
字符串将类似于“E11000重复键错误...”(包括违规重复键)。