MongoDb - Evaluation Query operator - $all
Description
In this page we are going to discuss the usage of $all operator. The $all operator is used to retrieve the documents from a collection if it matches all values in the specified array.
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" ] } } }
Document written in command prompt
MongoDB $all operator
If we want to fetch documents from the collection "testtable" where the value of "community_members" are 5000, 2000 and 1500 is the value of "extra" of a JSON style object, the following mongodb command can be used :
>db.testtable.find({"extra.community_members" : {$all : [5000,2000,1500]}}).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.
Output of the command
{ "_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" ] } } }
Document written in command prompt
The above output shows, the document appears from the collection containing all the values in "community_members" matching the values specified in the array.
MongoDB $all operator - example2
>db.testtable.find({"extra.community_members" : {$all : [5000,1500]}}).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.
Output of the command
{ "_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" ] } } }
Document written in command prompt
The above output shows, the document appears from the collection containing all the values in "community_members" matching the values specified in the array. But it is not required that document comprises of the values specified in the array only. Other values excluding those values can also be present. Here, in the example the values specified in the array 5000 and 1500 are present in the document along with other values like 2000.
MongoDB $all operator - example3
>db.testtable.find({"extra.community_members" : {$all : [1200,1500]}})
The above command will fetch no results. Because the values specified in the array are not present in the documents.
So to get an output, all the values specified in the array must be present the documents but all the values in the documents must not present in the criteria array.
? Source: http://www.w3resource.com/mongodb/mongodb-all-operators.php