Mongoose findOne 带有“非此即彼”查询[重复]

2024-01-08

我有一个 Mongo 用户数据库,正在使用 Mongoose 查询。我想做 findOne 来确定用户是否已经存在。我希望它首先搜索用户是否已存在带有电子邮件的用户,如果不存在,则应该搜索是否存在带有电话的用户。这是否必须在两个单独的查询中完成,或者可以合并为一个查询吗?

User.findOne({ email: req.body.email }).exec(function(err, user){

  if (user) //user already exists with email
  else //no users with that email but we haven't checked phone number yet!

});

为什么不直接使用$or操作员?

User.findOne({$or: [
    {email: req.body.email},
    {phone: req.body.phone}
]}).exec(function(err, user){
    if (user) {} //user already exists with email AND/OR phone.
    else {} //no users with that email NOR phone exist.
});

这是伪SQL相等的:

SELECT * FROM users WHERE email = '%1' OR phone = '%2'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mongoose findOne 带有“非此即彼”查询[重复] 的相关文章