检查项目集合值mongodb

时间:2014-02-05 22:12:18

标签: node.js mongodb

我想知道如何检查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');
        }
    });

}
}

3 个答案:

答案 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重复键错误...”(包括违规重复键)。