2016-04-04 10 views
2

マイモデルコード:、マングース

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検索という単語です。しかし、私はOR検索や他の方法でマッチを使用する以外の方法を知らないのですか?

答えて

1

$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) 
    } 
}); 
+1

本当にありがとうございます。 「友人、 \t \t試合::{$または:[{Eメール:{$の正規表現:用語}}、 \t \t {名:{$の正規表現:用語だから私は 移入({ \t \tパス\tを解決しました}}、 \t \t {会社:{$正規表現:用語}}、 \t \t {位置:{$正規表現:用語}}、 \t \t {にphoneNumber:{$正規表現:用語}}] \t \t} \t}) –