小编Jus*_*ser的帖子

MongoDB SELF JOIN 查询有 1 个集合

我想做类似的事情

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)

java json self-join mongodb mongodb-java

3
推荐指数
1
解决办法
3846
查看次数

标签 统计

java ×1

json ×1

mongodb ×1

mongodb-java ×1

self-join ×1