我的型号代码:
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' }]
});
使用这两个,我想使用一个关键字搜索所有字段。
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 }}])
在其他地方,这就是“搜索”这个词。但除了使用匹配之外,我不知道如何填充OR搜索或其他方式?
答案 0 :(得分:4)
您可以使用$or
运算符对match
的查询进行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)
}
});