我想find填充或search,mongoose

我的模型代码:

var user = mongoose.Schema({ email: .... password: ..... name : ... company : ... position : .... phoneNumber : ... signDate : Date, friends: [{ type : mongoose.Schema.Types.ObjectId ,unique: true, ref: 'user' }], accessToken: ..... }); 

和:

 var friend = mongoose.Schema({ friends: [{ type : mongoose.Schema.Types.ObjectId ,unique: true, ref: 'user' }] }); 

使用这两个,我想使用一个关键字来search所有的字段。

 var fds = new Friend; User.findOne({email : user.email}) .populate({ path : 'friends', match : ''''empty'''' }) .exec(function (err, fd) { if(!err){ fds = fd.friends; res.render('account/friend', { layout: false, user: user, friends: fds }); }else{ console.log(err)} }); 

我不知道该在什么空间放置。

 var term = new RegExp(req.body.inputAll, 'i'); User.find().or([{ email: { $regex: term }}, { name: { $regex: term }}, { company: { $regex: term }}, { position: { $regex: term }}, { phoneNumber: { $regex: term }}]) 

在其他地方,这是词search。 但我不知道如何填充或search,或除了使用比赛之外的其他方式?

您可以使用$or运算符来对OR查询进行OR运算。 像这样的东西:

 User.findOne({email : user.email}) .populate({ path : 'friends', match : { $or: [ { email: { $regex: term }}, { name: { $regex: term }}, { company: { $regex: term }}, { position: { $regex: term }}, { phoneNumber: { $regex: term }} ] } }) .exec(function (err, fd) { if(!err){ fds = fd.friends; res.render('account/friend', { layout: false, user: user, friends: fds }); } else{ console.log(err) } });