MongoDb - Evaluation Query operator - $mod
Description
The $mod operator is used to help the user to retrieve documents from a collection for a specific field that consist an even or odd number. This can be done easily because the $mod operator calculate the remainder and checks whether it is 0 or not. It works like 'where' clause of Sql.
If no parameter with $mod is used which behaves like a 'where' clause, results will appear where the remainder is 0 otherwise no results is displayed.
The $mod operator works only on integer values and not a strings type numeric value.
Our database name is 'myinfo' and our collection name is 'testtable'. Here, is the collection bellow.
Sample collection "testtable"
{ "_id" : ObjectId("528f4e630fe5e6467e58ae7b"), "user_id" : "user1", "password" : "1a2b3c", "sex" : "Male", "age" : 17, "date_of_join" : "16/10/2010", "education" : "M.C.A.", "profession" : "CONSULTANT", "interest" : "MUSIC", "extra" : { "community_name" : [ "MODERN MUSIC", "CLASSICAL MUSIC", "WESTERN MUSIC" ], "community_moder_id" : [ "MR. Alex", "MR. Dang", "MR Haris" ], "community_members" : [ 700, 200, 1500 ], "friends" : { "valued_friends_id" : [ "kumar", "harry", "anand" ], "ban_friends_id" : [ "Amir", "Raja", "mont" ] } } } { "_id" : ObjectId("528f4e720fe5e6467e58ae7c"), "user_id" : "user2", "password" : "11aa1a", "sex" : "Male", "age" : 24, "date_of_join" : "17/10/2009", "education" : "M.B.A.", "profession" : "MARKETING", "interest" : " MUSIC", "extra" : { "community_name" : [ "MODERN MUSIC", "CLASSICAL MUSIC", "WESTERN MUSIC" ], "co mmunity_moder_id" : [ "MR. Roy", "MR. Das", "MR Doglus" ], "community_members" : [ 500, 300, 1400 ], "friends" : { "valued_friends_id" : [ "pal", "viki", "john" ], "ban_friends_id" : [ "jalan", "mono j", "evan" ] } } } { "_id" : ObjectId("528f4e7e0fe5e6467e58ae7d"), "user_id" : "user3", "password" : "b1c1d1", "sex" : "Female", "age" : 19, "date_of_join" : "16/10/2010", "education" : "M.C.A.", "profession" : "IT COR.", "interest" : "AR T", "extra" : { "community_name" : [ "MODERN ART", "CLASSICAL ART", "WESTERN ART" ], "community_mo der_id" : [ "MR. Rifel", "MR. Sarma", "MR Bhatia" ], "community_members" : [ 5000, 2000, 1500 ], "friends" : { "valued_friends_id" : [ "philip", "anant", "alan" ], "ban_friends_id" : [ "Amir", "Raja", "mont" ] } } } { "_id" : ObjectId("528f4e910fe5e6467e58ae7e"), "user_id" : "user4", "password" : "abczyx", "sex" : "Female", "age" : 22, "date_of_join" : "17/8/2009", "education" : "M.B.B.S.", "profession" : "DOCTOR", "interest" : "SPORTS", "extra" : { "community_name" : [ "ATHELATIC", "GAMES FAN GYES", "FAVOURIT GAMES" ], "community_moder_id" : [ "MR. Paul", "MR. Das", "MR Doglus" ], "community_members" : [ 2500, 2200, 3500 ], "friends" : { "valued_friends_id" : [ "vinod", "viki", "john" ], "ban_friends_id" : [ "jalan", "monoj", "evan" ] } } } { "_id" : ObjectId("528f4f8a0fe5e6467e58ae7f"), "user_id" : "user5", "password" : "user5", "sex" : "Male", "age" : 21, "date_of_join" : "17/08/2011", "education" : "MCA", "profession" : "S.W. Engineer", "interest" : "SPORTS", "extra" : { "community_name" : [ "ATHELATIC", "GAMES FAN GYES", "FAVOURIT GAMES" ] } }
MongoDB $mod operator
If we want to fetch documents from the collection "testtable" where the value of "age" field is divisible by 8, the following mongodb command can be used :
>db.testtable.find({"age" : {$mod : [8]}}).pretty();
N.B. find() method displays the documents in a non structured format but to display the results in a formatted way, the pretty() method can be used.
SQL equivalent command is
SELECT * FROM testtable WHERE MOD(age,8)=0;
Output
{ "_id" : ObjectId("528f4e720fe5e6467e58ae7c"), "user_id" : "user2", "password" : "11aa1a", "sex" : "Male", "age" : 24, "date_of_join" : "17/10/2009", "education" : "M.B.A.", "profession" : "MARKETING", "interest" : " MUSIC", "extra" : { "community_name" : [ "MODERN MUSIC", "CLASSICAL MUSIC", "WESTERN MUSIC" ], "co mmunity_moder_id" : [ "MR. Roy", "MR. Das", "MR Doglus" ], "community_members" : [ 500, 300, 1400 ], "friends" : { "valued_friends_id" : [ "pal", "viki", "john" ], "ban_friends_id" : [ "jalan", "mono j", "evan" ] } } }
The above output shows, documents appears from the collection containing such a value for the "age" field which has a remainder 0 after dividing by 8. The "$mod[8]" means "age % (modulo operator) 8=0"
MongoDB $mod operator example
If we want to fetch documents from the collection "testtable" where the value of "age" field is divisible by 9, the following mongodb command can be used :
gt;db.testtable.find({"age" : {$mod : [9]}})
N.B. find() method displays the documents in a non structured format but to display the results in a formatted way, the pretty() method can be used.
SQL equivalent command is
SELECT * FROM testtable WHERE MOD(age,9)=0;
The above command returns no output, because no one document holds such a value for the "age" field which can be divisible by 9.
MongoDB $mod operator using parameter
If we want to fetch documents from the collection "testtable" where the value of "age" field contain such a value which returns a remainder 2 after dividing by 5, the following mongodb command can be used :
>db.testtable.find({"age" : {$mod : [5,2]}}).pretty();
SQL equivalent command is
SELECT * FROM testtable WHERE MOD(age,5)=2;
Output
{ "_id" : ObjectId("528f4e630fe5e6467e58ae7b"), "user_id" : "user1", "password" : "1a2b3c", "sex" : "Male", "age" : 17, "date_of_join" : "16/10/2010", "education" : "M.C.A.", "profession" : "CONSULTANT", "interest" : "MUSIC", "extra" : { "community_name" : [ "MODERN MUSIC", "CLASSICAL MUSIC", "WESTERN MUSIC" ], "community_moder_id" : [ "MR. Alex", "MR. Dang", "MR Haris" ], "community_members" : [ 700, 200, 1500 ], "friends" : { "valued_friends_id" : [ "kumar", "harry", "anand" ], "ban_friends_id" : [ "Amir", "Raja", "mont" ] } } } { "_id" : ObjectId("528f4e910fe5e6467e58ae7e"), "user_id" : "user4", "password" : "abczyx", "sex" : "Female", "age" : 22, "date_of_join" : "17/8/2009", "education" : "M.B.B.S.", "profession" : "DOCTOR", "interest" : "SPORTS", "extra" : { "community_name" : [ "ATHELATIC", "GAMES FAN GYES", "FAVOURIT GAMES" ], "community_moder_id" : [ "MR. Paul", "MR. Das", "MR Doglus" ], "community_members" : [ 2500, 2200, 3500 ], "friends" : { "valued_friends_id" : [ "vinod", "viki", "john" ], "ban_friends_id" : [ "jalan", "monoj", "evan" ] } } }
The above output shows, documents appears from the collection containing such a value for the "age" field which has a remainder 2 after dividing by 5. The "$mod[5,2]" means "age % (modulo operator) 5=2".
Source: http://www.w3resource.com/mongodb/mongodb-mod-operators.php ?