Mongoose查询返回一个不包含特定字段的数组?

时间:2015-10-14 00:01:12

标签: mongodb mongoose

如何在Mongoose中编写一个我想在数组中搜索的查询,如果没有值,那么我想更新我的文档。我已经阅读了许多StackOverflow答案,但没有一个指定如何将它与数组操作一起使用。我的查询也在下面给出。有人可以告诉我该怎么做我已经被困在这里一段时间了。 在下面的代码中,我试图找到内部reg_ids数组,如果它的值都不包含reg_id这是一个字符串然后我想更新我的文档

userregidsmodel.findOneAndUpdate(
  {email_id: jeeb_no, reg_ids: { $ne: reg_id } }, 
  {$push: {reg_ids: reg_id} }, 
  {'total_follow_notifications': 1, 'total_notifications': 1, '_id':0},
  function(err, docs) {
    if (err) {
      console.log('Error Finding query results');

      console.log(err);
      res.json({success: 0, message : err});
      return next(err);
    } else {
      if (docs) {
        console.log('Login Successfull');
        res.json({success : 1, message : "Login Successfull", mobile_no: mobile_no, email_id: email_id});
        return next();
      } else {
        console.log('login Successfull app previous token is used');
        res.json({success : 1, message : "Login Successfull", mobile_no: mobile_no, email_id: email_id});
        return next();
      }
    }
  });

1 个答案:

答案 0 :(得分:1)

findOneAndUpdate的第三个参数是一个options参数,而不仅仅是一个字段选择参数,所以你需要将你的字段选择对象包装在{select: ...}对象中:

userregidsmodel.findOneAndUpdate(
  {email_id: jeeb_no, reg_ids: { $ne: reg_id } }, 
  {$push: {reg_ids: reg_id} }, 
  {select: {'total_follow_notifications': 1, 'total_notifications': 1, '_id':0}},
  function(err, docs) { ...