使用和/或&或找到ObjectId的Mongoose

时间:2015-11-11 17:48:12

标签: node.js mongodb mongoose

我们正在我们的应用程序中实施搜索。我们必须显示所有公共项目或用户所遵循的所有私有项目。架构如下。

var ItemSchema = new Schema({
    .
    .
    .
    followers: {
        type: Array
    }
}

关注者充满了用户的objectID 而且我试图像这样找到它:

Item.find()
   .and([
    { name: new RegExp(searchText, 'i') },
    {
      $or: [
        { private: false },
        {
          $and: [
            { private: true },
            { followers: user._id }
          ]
        }
      ]
    }
  ])
  .exec(function(err, item) {
    if(err) {
       console.log(err);
    }
    done(null, user, Item);
  }

1 个答案:

答案 0 :(得分:0)

您可以使用Query#or帮助程序和$and

Item.find()
    .or([ 
          { "private": true  },
          { $and: [{ private: true },{ followers: user._id }
          ]} 
     ])
     .exec(function(err, item) {
        ...
      }