我想做类似的事情
SELECT e1.sender
FROM email as e1, email as e2
WHERE e1.sender = e2.receiver;
Run Code Online (Sandbox Code Playgroud)
但在 MongoDB 中。找了很多关于JOIN的论坛,可以通过MongoDB中的MapReduce实现,但是在这个例子中用self-join不明白怎么做。
我在想这样的事情:
var map1 = function(){
var output = {
sender:db.collectionSender.email,
receiver: db.collectionReceiver.findOne({email:db.collectionSender.email}).email
}
emit(this.email, output);
};
var reduce1 = function(key, values){
var outs = {sender:null, receiver:null
values.forEach(function(v) {
if(outs.sender == null){
outs.sender = v.sender
}
if(outs.receivers == null){
outs.receiver = v.receiver
}
});
return outs; }};
db.email.mapReduce(map2,reduce2,{out:'rec_send_email'})
Run Code Online (Sandbox Code Playgroud)
创建 2 个新集合 - collectionReceiver 仅包含接收者电子邮件和 collectionSender 仅包含发件人电子邮件
或者
var map2 = function(){
var output = …Run Code Online (Sandbox Code Playgroud)