Uploaded image for project: 'Core Server'
  1. Core Server
  2. SERVER-48297

mapReduce no longer returns counts

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major - P3
    • Resolution: Works as Designed
    • Affects Version/s: 4.3.6
    • Fix Version/s: None
    • Component/s: MapReduce
    • Labels:
      None
    • Backwards Compatibility:
      Fully Compatible
    • Operating System:
      ALL

      Description

      It seems the 4.4 server no longer returns counts in mapreduce operations.

      Following the instructions in https://docs.mongodb.com/manual/reference/command/mapReduce/#out-options, setup as follows:

      db.orders.insertMany([
         { _id: 1, cust_id: "Ant O. Knee", ord_date: new Date("2020-03-01"), price: 25, items: [ { sku: "oranges", qty: 5, price: 2.5 }, { sku: "apples", qty: 5, price: 2.5 } ], status: "A" },
         { _id: 2, cust_id: "Ant O. Knee", ord_date: new Date("2020-03-08"), price: 70, items: [ { sku: "oranges", qty: 8, price: 2.5 }, { sku: "chocolates", qty: 5, price: 10 } ], status: "A" },
         { _id: 3, cust_id: "Busby Bee", ord_date: new Date("2020-03-08"), price: 50, items: [ { sku: "oranges", qty: 10, price: 2.5 }, { sku: "pears", qty: 10, price: 2.5 } ], status: "A" },
         { _id: 4, cust_id: "Busby Bee", ord_date: new Date("2020-03-18"), price: 25, items: [ { sku: "oranges", qty: 10, price: 2.5 } ], status: "A" },
         { _id: 5, cust_id: "Busby Bee", ord_date: new Date("2020-03-19"), price: 50, items: [ { sku: "chocolates", qty: 5, price: 10 } ], status: "A"},
         { _id: 6, cust_id: "Cam Elot", ord_date: new Date("2020-03-19"), price: 35, items: [ { sku: "carrots", qty: 10, price: 1.0 }, { sku: "apples", qty: 10, price: 2.5 } ], status: "A" },
         { _id: 7, cust_id: "Cam Elot", ord_date: new Date("2020-03-20"), price: 25, items: [ { sku: "oranges", qty: 10, price: 2.5 } ], status: "A" },
         { _id: 8, cust_id: "Don Quis", ord_date: new Date("2020-03-20"), price: 75, items: [ { sku: "chocolates", qty: 5, price: 10 }, { sku: "apples", qty: 10, price: 2.5 } ], status: "A" },
         { _id: 9, cust_id: "Don Quis", ord_date: new Date("2020-03-20"), price: 55, items: [ { sku: "carrots", qty: 5, price: 1.0 }, { sku: "apples", qty: 10, price: 2.5 }, { sku: "oranges", qty: 10, price: 2.5 } ], status: "A" },
         { _id: 10, cust_id: "Don Quis", ord_date: new Date("2020-03-23"), price: 25, items: [ { sku: "oranges", qty: 10, price: 2.5 } ], status: "A" }
      ])
       
         
           
       
      var mapFunction1 = function() {
         emit(this.cust_id, this.price);
      };
       
       
       
       
       
      var reduceFunction1 = function(keyCustId, valuesPrices) {
         return Array.sum(valuesPrices);
      };
      

      Then run:

      db.orders.mapReduce(
         mapFunction1,
         reduceFunction1,
         { out: "map_reduce_example" }
      )
       
       
       
      db.orders.mapReduce(
         mapFunction1,
         reduceFunction1,
         { out: {inline: 1} }
      )
       
      
      

      4.2 result:

       
       
      MongoDB Enterprise ruby-driver-rs:PRIMARY> db.orders.mapReduce(
      ...    mapFunction1,
      ...    reduceFunction1,
      ...    { out: "map_reduce_example" }
      ... )
      {
      	"result" : "map_reduce_example",
      	"timeMillis" : 29,
      	"counts" : {
      		"input" : 10,
      		"emit" : 10,
      		"reduce" : 4,
      		"output" : 4
      	},
      	"ok" : 1,
      	"$clusterTime" : {
      		"clusterTime" : Timestamp(1589906220, 7),
      		"signature" : {
      			"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
      			"keyId" : NumberLong(0)
      		}
      	},
      	"operationTime" : Timestamp(1589906220, 7)
      }
      MongoDB Enterprise ruby-driver-rs:PRIMARY> 
      MongoDB Enterprise ruby-driver-rs:PRIMARY> 
      MongoDB Enterprise ruby-driver-rs:PRIMARY> db.orders.mapReduce(
      ...    mapFunction1,
      ...    reduceFunction1,
      ...    { out: {inline: 1} }
      ... )
      {
      	"results" : [
      		{
      			"_id" : "Ant O. Knee",
      			"value" : 95
      		},
      		{
      			"_id" : "Busby Bee",
      			"value" : 125
      		},
      		{
      			"_id" : "Cam Elot",
      			"value" : 60
      		},
      		{
      			"_id" : "Don Quis",
      			"value" : 155
      		}
      	],
      	"timeMillis" : 14,
      	"counts" : {
      		"input" : 10,
      		"emit" : 10,
      		"reduce" : 4,
      		"output" : 4
      	},
      	"ok" : 1,
      	"$clusterTime" : {
      		"clusterTime" : Timestamp(1589906220, 7),
      		"signature" : {
      			"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
      			"keyId" : NumberLong(0)
      		}
      	},
      	"operationTime" : Timestamp(1589906220, 7)
      }
      MongoDB Enterprise ruby-driver-rs:PRIMARY> 
      MongoDB Enterprise ruby-driver-rs:PRIMARY> 
      MongoDB Enterprise ruby-driver-rs:PRIMARY> 
      

      4.4 result:

       
      MongoDB Enterprise ruby-driver-rs:PRIMARY> db.orders.mapReduce(
      ...    mapFunction1,
      ...    reduceFunction1,
      ...    { out: "map_reduce_example" }
      ... )
      {
      	"result" : "map_reduce_example",
      	"ok" : 1,
      	"$clusterTime" : {
      		"clusterTime" : Timestamp(1589906282, 6),
      		"signature" : {
      			"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
      			"keyId" : NumberLong(0)
      		}
      	},
      	"operationTime" : Timestamp(1589906282, 6)
      }
      MongoDB Enterprise ruby-driver-rs:PRIMARY> 
      MongoDB Enterprise ruby-driver-rs:PRIMARY> 
      MongoDB Enterprise ruby-driver-rs:PRIMARY> 
      MongoDB Enterprise ruby-driver-rs:PRIMARY> 
      MongoDB Enterprise ruby-driver-rs:PRIMARY> db.orders.mapReduce(
      ...    mapFunction1,
      ...    reduceFunction1,
      ...    { out: {inline: 1} }
      ... )
      {
      	"results" : [
      		{
      			"_id" : "Cam Elot",
      			"value" : 60
      		},
      		{
      			"_id" : "Ant O. Knee",
      			"value" : 95
      		},
      		{
      			"_id" : "Don Quis",
      			"value" : 155
      		},
      		{
      			"_id" : "Busby Bee",
      			"value" : 125
      		}
      	],
      	"ok" : 1,
      	"$clusterTime" : {
      		"clusterTime" : Timestamp(1589906282, 6),
      		"signature" : {
      			"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
      			"keyId" : NumberLong(0)
      		}
      	},
      	"operationTime" : Timestamp(1589906282, 6)
      }
      MongoDB Enterprise ruby-driver-rs:PRIMARY> 
      

      Neither collection nor inline output appear to be producing the counts.

      I searched jira for "map reduce counts" and "mapreduce counts" and couldn't locate any tickets where this output would've been intentionally removed.

        Attachments

          Issue Links

            Activity

              People

              Assignee:
              Unassigned Unassigned
              Reporter:
              oleg.pudeyev Oleg Pudeyev
              Participants:
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved: