w3resource

MongoDB Exercise - Find restaurants with cuisines that contain the word 'Pizza' and their addresses


Write a MongoDB query to find the name, address, and cuisine of the restaurants that have a cuisine that contains the word 'Pizza'.

Structure of 'restaurants' collection :

{
  "address": {
     "building": "1007",
     "coord": [ -73.856077, 40.848447 ],
     "street": "Morris Park Ave",
     "zipcode": "10462"
  },
  "borough": "Bronx",
  "cuisine": "Bakery",
  "grades": [
     { "date": { "$date": 1393804800000 }, "grade": "A", "score": 2 },
     { "date": { "$date": 1378857600000 }, "grade": "A", "score": 6 },
     { "date": { "$date": 1358985600000 }, "grade": "A", "score": 10 },
     { "date": { "$date": 1322006400000 }, "grade": "A", "score": 9 },
     { "date": { "$date": 1299715200000 }, "grade": "B", "score": 14 }
  ],
  "name": "Morris Park Bake Shop",
  "restaurant_id": "30075445"
}

Query:

db.restaurants.find(
{ cuisine: { $regex: /Pizza/i } },
{ name: 1, address: 1, cuisine: 1, _id: 0 }
)

Output:

{
address: {
building: '464',
coord: [ -73.9791458, 40.744328 ],
street: '3 Avenue',
zipcode: '10016'
    },
cuisine: 'Pizza',
name: "Domino'S Pizza"
  },
  {
address: {
building: '148',
coord: [ -73.9806854, 40.7778589 ],
street: 'West   72 Street',
zipcode: '10023'
    },
cuisine: 'Pizza',
name: "Domino'S Pizza"
  },
  {
address: {
building: '156-71',
coord: [ -73.840437, 40.6627235 ],
street: 'Crossbay Boulevard',
zipcode: '11414'
    },
cuisine: 'Pizza/Italian',
name: 'New Park Pizzeria & Restaurant'
  },

.....

Explanation:

The query here in MongoDB returns a list of restaurant documents whose cuisine contains the word "Pizza", including the name, address, and cuisine fields, but excluding the "_id" field.

The pattern using the $regex operator, allows to match the regular expressions /Pizza/i, against the "cuisine" field that matches any string that contains the word "Pizza" regardless of case.

The resulting documents includes the "name", "address", and "cuisine" fields by set the values "1" and while the "0" value for "_id" indicates that it should be excluded.

Note: This output is generated using MongoDB server version 3.6

Improve this sample solution and post your code through Disqus.

Previous: Names, addresses, and cuisine of restaurants with a cuisine that ends with the letter 'y'.
Next: Find the restaurants achieved highest average score.

What is the difficulty level of this exercise?



Follow us on Facebook and Twitter for latest update.