2015-11-11 29 views
0

我们正在实施在我们的应用程序中进行搜索。我们必须显示所有公开的项目或用户所关注的所有私人项目。模式如下。使用and's和or的查找ObjectId的Mongoose

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

追随者被用户的对象ID填充。
而我试图找到它像这样:

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); 
    } 

回答

0

您可以使用Query#or佣工$and一起。

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