[SERVER-48297] mapReduce no longer returns counts Created: 19/May/20  Updated: 27/Oct/23  Resolved: 19/May/20

Status: Closed
Project: Core Server
Component/s: MapReduce
Affects Version/s: 4.3.6
Fix Version/s: None

Type: Bug Priority: Major - P3
Reporter: Oleg Pudeyev (Inactive) Assignee: Unassigned
Resolution: Works as Designed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Related
related to MONGOID-4848 Add server 4.4 configurations to ever... Closed
Backwards Compatibility: Fully Compatible
Operating System: ALL
Participants:

 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.


Generated at Thu Feb 08 05:16:42 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.