繁体   English   中英

用猫鼬寻找不止一个物体

[英]Look for more than one object with mongoose

刚开始使用猫鼬。 我有一个本质上可以通过JSON对象查看的方法。 我使用findOne方法来做到这一点,

User.findOne({ 'username': req.body.username }, function(err, user) { if(user) { console.log('that username is taken'); } if (err) { return done(err); } });

我的问题是,如果我想检索req.body.email之类的内容并检查它是否也存储在数据库中,该怎么办? 当我创建此方法的副本并仅将“用户名”:req.body.username更改为“ email”:req.body.email时,它可以工作,但是如果我只想使用一个功能,可以使用类似的方法吗? User.find({'email':req.body.email,''username':req.body.username ect。我尝试了User.find技术,但它不起作用。我基本上想检查我是否已有用户名或电子邮件存储在我的数据库中,然后使用此凭据将凭据保存到数据库

userDetails.save(function(err) { if (err) throw err; });

并在一种方法中执行此操作,但我不知道如何合并两者。

我们在find或findone中指定的条件是在我们的集合中查找匹配记录的条件。 我们无法提供条件,例如用户名和电子邮件。

如果需要给出多个条件,则需要使用$ and或$ or适用于我们的方案。

$ and- https://docs.mongodb.com/manual/reference/operator/query/and/

$ or- https://docs.mongodb.com/manual/reference/operator/query/or/

您可以使用updateMany /与multi:true一起更新。

User.updateMany({
  $or:[
  {
  'username': req.body.username
  },
  {
   'email':res.body.email
  }]
 , userDetail}, function(err, user) {
  if(user) {
    console.log('that username is taken');
  }
  if (err) {
    return done(err);
  }
});

如果要创建整个记录,如果查询不匹配,请使用upsert:true

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM