2016-07-28 15 views
0

Goodmorning異なるレコードの2つのフィールドを一致させるMongoose

私はデータセット上の特定のフィールドを一致させようとしています。データセットのようなレコードが含まれていますrecemail(受信者の電子メールは)他人の電子メールアドレスが一致するので、この場合は

{ 
    "token" : "17e0d95f2e2112443cfb09970ae9140e", 
    "answers" : { 
     "Yourname" : "Marco", 
     "youremail" : "[email protected]", 
     "recemail" : "[email protected]" 
    } 
}, 


{ 
    "token" : "cf5ae65b05249dc6b2a0c99c4cf9688e", 
    "answers" : { 
     "yourname" : "Sonja", 
     "youremail" : "[email protected]", 
     "recemail" : "[email protected]" 
    } 
} 

を、それが2と一致する必要があります。およびその逆。私が見つけることを試みている何 は、(これらのマッチのより多くの持つ大規模データセット内の)これら二つのレコードを検索する方法です。

だから、MarcoのrecemailはSonjaのyouremailを見つけて、これらの2つのマッチを別のコレクションに保存できるようにする必要がありますが、これは重要な部分ではありません。

は、誰かがこのクエリ おかげで私を助けることを願って!

+0

あなたは 'X.youremail == Y.recemail && X.recemail == Y.youremail'が必要ですか?または単に 'X.youremail == Y.recemail || X.recemail == Y.youremail'? – Arnauld

+0

このように。 '' 'X.recemail == Y.youremail && Y.recemail == X.youremail''' – Marco

答えて

1

次のコードは、2エントリ配列の配列を返します。各2エントリ配列は、送信者電子メールと受信者電子メールで構成されます。各ペアは1回だけ表示されます。言い換えれば、あなたは["[email protected]", "[email protected]"]なく["[email protected]", "[email protected]"]を取得します。

var list = [{ 
 
    "token" : "17e0d95f2e2112443cfb09970ae9140e", 
 
    "answers" : { 
 
     "Yourname" : "Marco", 
 
     "youremail": "[email protected]", 
 
     "recemail" : "[email protected]" } 
 
    }, { 
 
    "token" : "cf5ae65b05249dc6b2a0c99c4cf9688e", 
 
    "answers" : { 
 
     "yourname" : "Sonja", 
 
     "youremail": "[email protected]", 
 
     "recemail" : "[email protected]" } 
 
    }, { 
 
    "token" : "fe2c2740e083dfe02cc7e96520a0e079", 
 
    "answers" : { 
 
     "yourname" : "Joe", 
 
     "youremail": "[email protected]", 
 
     "recemail" : "[email protected]" } 
 
    } 
 
]; 
 

 
var res = [], sz = list.length; 
 

 
list.forEach(function(obj, pos) { 
 
    for(var i = pos + 1; i < sz; i++) { 
 
    if(
 
     list[i].answers.youremail == obj.answers.recemail && 
 
     list[i].answers.recemail == obj.answers.youremail 
 
    ) { 
 
     res.push([ obj.answers.youremail, obj.answers.recemail ]); 
 
    } 
 
    } 
 
}); 
 
console.log(res);

+0

本当にありがとうございますが、質問はMongooseのクエリと関係があります。これはうまくいき、すべてをフェッチしてから、ノード上で必要なデータを取得できますが、もともと必要だったのはMongoDBのクエリです。私は満足のいく答えを得られない場合、私は間違いなくあなたの答えカントーで行きます。 :) – Marco

+0

@マルコああ。これと1つ上のより多くのを助けることができないため申し訳ありませんが受け付けたいただきありがとうございます。 – Arnauld

関連する問題