w3resource

Find Listings with superhost and at least 2 listings in the listingsAndReviews collection


Find all listings with listing_url, name, address, host in the listingsAndReviews collection that have a host who is a superhost and has at least 2 listings.

Structure of 'listingsAndReviews' collection:

 {
    _id: '10059872',
    listing_url: 'https://www.airbnb.com/rooms/10059872',
    name: 'Soho Cozy, Spacious and Convenient',
    summary: 'Clean, fully furnish, Spacious 1 bedroom flat just off the escalator in Mid Levels. 2 minutes From Soho Bar and Restaurants. Located in a quiet alley 1 minute from Sun Yat Sen',
    space: '',
    description: 'Clean, fully furnish, Spacious 1 bedroom flat just off the escalator in Mid Levels. 2 minutes From Soho Bar and Restaurants. Located in a quiet alley 1 minute from Sun Yat Sen',
    neighborhood_overview: '',
    notes: '',
    transit: '',
    access: '',
    interaction: '',
    house_rules: '',
    property_type: 'Apartment',
    room_type: 'Entire home/apt',
    bed_type: 'Real Bed',
    minimum_nights: '4',
    maximum_nights: '20',
    cancellation_policy: 'flexible',
    last_scraped: ISODate("2019-03-11T04:00:00.000Z"),
    calendar_last_scraped: ISODate("2019-03-11T04:00:00.000Z"),
    first_review: ISODate("2015-12-19T05:00:00.000Z"),
    last_review: ISODate("2018-03-27T04:00:00.000Z"),
    accommodates: 3,
    bedrooms: 1,
    beds: 2,
    number_of_reviews: 3,
    bathrooms: Decimal128("1.0"),
    amenities: [
      'Air conditioning',
      'Kitchen',
      'Smoking allowed',
      'Doorman',
      'Elevator',
      'Heating',
      'Family/kid friendly',
      'Essentials',
      '24-hour check-in',
      'translation missing: en.hosting_amenity_50'
    ],
    price: Decimal128("699.00"),
    weekly_price: Decimal128("5000.00"),
    extra_people: Decimal128("0.00"),
    guests_included: Decimal128("1"),
    images: {
      thumbnail_url: '',
      medium_url: '',
      picture_url: 'https://a0.muscache.com/im/pictures/4533a1dc-6fd8-4167-938d-391c6eebbc19.jpg?aki_policy=large',
      xl_picture_url: ''
    },
    host: {
      host_id: '51624384',
      host_url: 'https://www.airbnb.com/users/show/51624384',
      host_name: 'Giovanni',
      host_location: 'Hong Kong, Hong Kong',
      host_about: '',
      host_thumbnail_url: 'https://a0.muscache.com/im/pictures/264b82a7-756f-4da8-b607-dc9759e2a10f.jpg?aki_policy=profile_small',
      host_picture_url: 'https://a0.muscache.com/im/pictures/264b82a7-756f-4da8-b607-dc9759e2a10f.jpg?aki_policy=profile_x_medium',
      host_neighbourhood: 'Soho',
      host_is_superhost: false,
      host_has_profile_pic: true,
      host_identity_verified: false,
      host_listings_count: 1,
      host_total_listings_count: 1,
      host_verifications: [ 'email', 'phone', 'reviews', 'jumio', 'government_id' ]
    },
    address: {
      street: 'Hong Kong, Hong Kong Island, Hong Kong',
      suburb: 'Central & Western District',
      government_area: 'Central & Western',
      market: 'Hong Kong',
      country: 'Hong Kong',
      country_code: 'HK',
      location: {
        type: 'Point',
        coordinates: [ 114.15027, 22.28158 ],
        is_location_exact: true
      }
    },
    availability: {
      availability_30: 0,
      availability_60: 0,
      availability_90: 0,
      availability_365: 0
    },
    review_scores: {
      review_scores_accuracy: 10,
      review_scores_cleanliness: 10,
      review_scores_checkin: 10,
      review_scores_communication: 10,
      review_scores_location: 10,
      review_scores_value: 8,
      review_scores_rating: 100
    },
    reviews: [
      {
        _id: '56904633',
        date: ISODate("2015-12-19T05:00:00.000Z"),
        listing_id: '10059872',
        reviewer_id: '5302612',
        reviewer_name: 'Octavio',
        comments: 'The host canceled this reservation 11 days before arrival. This is an automated posting.'
      },
      {
        _id: '223175530',
        date: ISODate("2018-01-01T05:00:00.000Z"),
        listing_id: '10059872',
        reviewer_id: '48436743',
        reviewer_name: 'Ross',
        comments: 'Giovanni was very helpful and responsive to my questions. This is a great apartment that is very convenient for exploring Hong Kong.'
      },

      {
        _id: '247251577',
        date: ISODate("2018-03-27T04:00:00.000Z"),
        listing_id: '10059872',
        reviewer_id: '111288273',
        reviewer_name: 'Christian',
        comments: 'The host canceled this reservation 8 days before arrival. This is an automated posting.'
      }
    ]
  },
.......

Query:

db.listingsAndReviews.find(
  {
    "host.host_is_superhost": true,
    "host.host_total_listings_count": { $gte: 2 }
  },
  {
    listing_url: 1,
    name: 1,
    address: 1,
    host: 1
  }
)

Output:

{
    _id: '1058555',
    listing_url: 'https://www.airbnb.com/rooms/1058555',
    name: 'Nice Cosy Room In Taksim',
    host: {
      host_id: '5823933',
      host_url: 'https://www.airbnb.com/users/show/5823933',
      host_name: 'Nihat',
      host_location: 'Istanbul',
      host_about: 'I live alone in Taksim area and i work at bar.\r\n' +
        'I like meet new friends from all of the world.\r\n' +
        'I like to Travel a lot ofcourse if i have free time :) East Asia , Sun , Sea , Sand , Movie  :) ',
      host_response_time: 'within an hour',
      host_thumbnail_url: 'https://a0.muscache.com/im/pictures/user/6bf03261-e7ac-4e0e-8121-3828612bbb6a.jpg?aki_policy=profile_small',
      host_picture_url: 'https://a0.muscache.com/im/pictures/user/6bf03261-e7ac-4e0e-8121-3828612bbb6a.jpg?aki_policy=profile_x_medium',
      host_neighbourhood: 'Cihangir',
      host_response_rate: 100,
      host_is_superhost: true,
      host_has_profile_pic: true,
      host_identity_verified: false,
      host_listings_count: 2,
      host_total_listings_count: 2,
      host_verifications: [ 'email', 'phone', 'facebook', 'reviews' ]
    },
    address: {
      street: 'Taksim, Cihangir, Istanbul , Beyoğlu, Turkey',
      suburb: 'Beyoglu',
      government_area: 'Beyoglu',
      market: 'Istanbul',
      country: 'Turkey',
      country_code: 'TR',
      location: {
        type: 'Point',
        coordinates: [ 28.98648, 41.03376 ],
        is_location_exact: true
      }
    }
  },
  {
    _id: '10635276',
    listing_url: 'https://www.airbnb.com/rooms/10635276',
    name: 'GREAT Apartment at Barra da Tijuca',
    host: {
      host_id: '54904357',
      host_url: 'https://www.airbnb.com/users/show/54904357',
      host_name: 'Luiz Henrique',
      host_location: 'Rio de Janeiro, State of Rio de Janeiro, Brazil',
      host_about: 'Sou de Belo Horizonte moro no Rio desde 1998',
      host_thumbnail_url: 'https://a0.muscache.com/im/pictures/897884b4-1c64-4817-9d81-6bf51c6a6024.jpg?aki_policy=profile_small',
      host_picture_url: 'https://a0.muscache.com/im/pictures/897884b4-1c64-4817-9d81-6bf51c6a6024.jpg?aki_policy=profile_x_medium',
      host_neighbourhood: 'Barra da Tijuca',
      host_is_superhost: true,
      host_has_profile_pic: true,
      host_identity_verified: false,
      host_listings_count: 2,
      host_total_listings_count: 2,
      host_verifications: [ 'email', 'phone', 'reviews', 'jumio', 'government_id' ]
    },
    address: {
      street: 'Rio de Janeiro, Rio de Janeiro, Brazil',
      suburb: 'Barra da Tijuca',
      government_area: 'Barra da Tijuca',
      market: 'Rio De Janeiro',
      country: 'Brazil',
      country_code: 'BR',
      location: {
        type: 'Point',
        coordinates: [ -43.32984175609327, -23.011124595436097 ],
        is_location_exact: true
      }
    }
  },

Explanation:

The said query in MongoDB that retrieves all the documents with the listing_url, name, address, and host fields from the listingsAndReviews collection where the host is a superhost and has at least 2 listings.

The find() method filters the documents with a host who is a superhost and has at least 2 listings.

The $gte operator checks whether the value of the total_listings_count field within the host subdocument is greater than or equal to 2.

The projection includes the listing_url, name, address, and host fields in the output.

Improve this sample solution and post your code through Disqus.

Previous: Find listings in Lagoa suburb in the listingsAndReviews collection.
Next: Find listings with hosts having profile picture and identity verification in the listingsAndReviews collection.

What is the difficulty level of this exercise?



Follow us on Facebook and Twitter for latest update.