Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 如何合并来自两个不同集合的文档_Mongodb_Mapreduce - Fatal编程技术网

Mongodb 如何合并来自两个不同集合的文档

Mongodb 如何合并来自两个不同集合的文档,mongodb,mapreduce,Mongodb,Mapreduce,如何合并来自两个不同集合的文档 从shopping\u collection我们可以获得购买历史记录 要获取每个购买历史的详细信息,我需要从detailed\u shopping\u list\u collection 但是,由于集合不同,似乎不可能使用aggregate 如何使用mapreduce获取它 购物中心 详细的购物清单收藏 预期汇总结果 您试图实现的目标应该在客户端使用多个查询来完成,因为mapreduce并不是连接的替代品。但是,有些人提出了一些有趣的方法,例如……请检查以下查询:

如何合并来自两个不同集合的文档

shopping\u collection
我们可以获得购买历史记录

要获取每个购买历史的详细信息,我需要从
detailed\u shopping\u list\u collection

但是,由于集合不同,似乎不可能使用
aggregate

如何使用mapreduce获取它

购物中心 详细的购物清单收藏 预期汇总结果
您试图实现的目标应该在客户端使用多个查询来完成,因为mapreduce并不是连接的替代品。但是,有些人提出了一些有趣的方法,例如……

请检查以下查询:

// MAP FUNCTION LOGIC 

var map = function(){
 var arr = new Array();
 this.records.forEach(function(doc){ 
   var temp = db.detailed_shopping_list_collection.find(
       {"BUY_DATE": doc.BUY_DATE, "SEQ_NO" : doc.SEQ_NO}); 
   arr.push(temp); 
                 });
 emit(this._id,{"name" : this.name, "gender" :
  this.gender, "birthday" :   this.birthday, "records" : arr );
}


// REDUCE FUNCTION LOGIC

var reduce = function(id , doc){ return doc; }


// MAP REDUCE CALL
db.shopping_collection.mapReduce( map,reduce,{out: {inline :1}} );
{
  "BUY_DATE": new Date("1996-02-08T08:00:00+0800"),
  "SEQ_NO": 768
  "ITEM_NAME": "iphone4s"
  "PRICE": 500
},
{
  "BUY_DATE": new Date("1996-02-08T08:00:00+0800"),
  "SEQ_NO": 768
  "ITEM_NAME": "iphone4s"
  "PRICE": 500
},
{
  "BUY_DATE": new Date("1996-02-08T08:00:00+0800"),
  "SEQ_NO": 768
  "ITEM_NAME": "macbook"
  "PRICE": 700
}
{
  "name": "Mary",
  "gender": "M",
  "birthday": new Date("1980-04-01T08:00:00+0800"),
  "records": [
    {
      "BUY_DATE": new Date("1996-02-08T08:00:00+0800"),
      "SEQ_NO": 768,
      "PURCHASE_HISTORY":[
        {"ITEM_NAME": "iphone4s"
                "PRICE": 500},
        {"ITEM_NAME": "iphone4s"
                "PRICE": 500},                
        {"ITEM_NAME": "macbook"
                    "PRICE": 700}
      ]
      "UNIQUE_PURCHASE_ITEMS":[ "iphone4s", "macbook"
      ]
    },
    {
      "BUY_DATE": new Date("1996-02-06T08:00:00+0800"),
      "SEQ_NO": 595,
    }
}
// MAP FUNCTION LOGIC 

var map = function(){
 var arr = new Array();
 this.records.forEach(function(doc){ 
   var temp = db.detailed_shopping_list_collection.find(
       {"BUY_DATE": doc.BUY_DATE, "SEQ_NO" : doc.SEQ_NO}); 
   arr.push(temp); 
                 });
 emit(this._id,{"name" : this.name, "gender" :
  this.gender, "birthday" :   this.birthday, "records" : arr );
}


// REDUCE FUNCTION LOGIC

var reduce = function(id , doc){ return doc; }


// MAP REDUCE CALL
db.shopping_collection.mapReduce( map,reduce,{out: {inline :1}} );