Map Reduce in MongoDB
In MongoDB Documentation, Map-Reduce is a data processing system that condenses a large amount of data into useful overall results. MongoDB uses mapReduce command for Map-Reduce operation. In general, Map Reduce is used to handle large data sets.
In MongoDB Documentation, Map-Reduce is a data processing system that condenses a large amount of data into useful overall results. MongoDB uses mapReduce command for Map-Reduce operation . In general, Map Reduce is used to handle large data sets.
MapReduce command in MongoDB
The basic syntax of mapReduce command is as follows:
> db . collection . mapReduce ( function () { emit ( key , value );}, //map function function ( key , values ) { return reduceFunction }, //reduce function { out : collection , query : document , sort : document , limit : number } )
First, the function of Map Reduce Query Collection, then map the resulting Document to emit (Emit) key-value pairs that are then shortened based on the keys that have multiple values.
In the above syntax:
map is a JavaScript function that maps a value to a key and emits a key-value pair.
reduce is a JavaScript function that shortens or groups all Documents with the same key.
out determines the location of Map-Reduce query results.
The query specifies the arbitrary selection criteria to select the documents.
Sort sorting criteria arbitrarily arranged.
limit determines the number of arbitrary maximum documents to be returned.
Use MapReduce in MongoDB
You follow the structure of the Document to keep User Post. This Document stores the user's user_name and status.
{ "post_text" : "tutorialspoint is an awesome website for tutorials" , "user_name" : "mark" , "status" : "active" }
Now, we will use a mapReduce function on the posts collection to select all active posts, group them based on user_name and then count the number of posts of each user by using the following code:
> db . posts . mapReduce ( function () { emit ( this . user_id , 1 ); }, function ( key , values ) { return Array . sum ( values )}, { query :{ status : "active" }, out : "post_total" } )
The mapReduce query on will result:
{
"result": "post_total",
"timeMillis": 9,
"counts": {
"input": 4,
"emit": 4,
"reduce": 2,
"output": 2
},
"ok": 1,
}
The results show that, the total of 4 documents have been connected to the query (status: "active"), the map function emits 4 documents with key-value pairs and ultimately reduce the function of mapped Documents with the same key go in 2.
To see the results of this mapReduce query, you use the find operator:
> db . posts . mapReduce ( function () { emit ( this . user_id , 1 ); }, function ( key , values ) { return Array . sum ( values )}, { query :{ status : "active" }, out : "post_total" } ). find ()
The above query provides results indicating that both users tom and mark have two posts in the state that is active.
{ "_id" : "tom" , "value" : 2 } { "_id" : "mark" , "value" : 2 }
In the same manner, MapReduce queries can be used to build complex Aggregation queries. The use of custom JavaScript functions makes using MapReduce more flexible and powerful.
According to Tutorialspoint
Previous article: ObjectId in MongoDB
Next article: Text Search in MongoDB
You should read it
- How to use Aggregation Pipeline in MongoDB
- MongoDB queries and tasks you should know
- Index (Mong) in MongoDB
- Instructions on 2 ways to install MongoDB on Raspberry Pi
- Advantages of MongoDB
- Data type in MongoDB
- MongoDB malicious code attacks more than 26,000 victims in a week
- Query Document in MongoDB
- Learn about security features and authentication in MongoDB
- ObjectId in MongoDB
- Text Search in MongoDB
- Shard in MongoDB