检查项目是否存在于不同的字段中

时间:2016-02-25 05:25:02

标签: mongodb mongoose

如何检查某个项目是否存在于文档的不同字段中?

我目前有以下内容:

Room.findOne({
  editUrl: req.params.roomName
}, function(err, room) {
  if (err) {
    return err;
  }
 }

我还要检查字段viewUrl中是否存在 req.params.roomName 。 如何在不必另外执行findOne()的情况下执行此操作。

编辑: 使用$或运算符我可以检查项目是否在字段1或字段2中。我现在需要的是如果我正在搜索的项目在字段1中而如果它在字段2中则如何添加条件

编辑2:请在下面找到我的原始功能:这样做首先检查参数是否存在。如果存在,则更新该文档并将用户添加到users数组中。现在我需要检查参数是否存在于editUrl字段或viewUrl字段中。如果它存在于editUrl字段中,则将用户添加到 users 数组中,如果它存在于viewUrl字段中,则将用户添加到 viewOnlyUsers 数组。

Room.findOne({
  editUrl: req.params.roomName
}, function(err, room) {
   if (err) {
     return err;
   }
   if (room != null) {
     Room.update({
       editUrl: req.params.roomName
   }, {
     $addToSet: {
       users: req.user._id
  }
   }, function(err,
  count) {
  if (!count) {
    return err
  }
});
res.render('account/board');
} else {
res.sendStatus(404);
}
});

1 个答案:

答案 0 :(得分:1)

您只需使用$或运算符

Room.findOne({
$or:[{editUrl: req.params.roomName},{viewUrl: req.params.roomName}]
}, function(err, room) {
  if (err) {
    return err;
  }
 }

$或运算符https://docs.mongodb.org/manual/reference/operator/query/or/的文档