w3resource

Find listings with strict cancellation policy


Find all listings with listing_url, name, property_type, bed, price, cancellation_policy in the listingsAndReviews collection that have a cancellation policy of "flexible".

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.aggregate([
  {
    $match: {
      cancellation_policy: "flexible"
    }
  },
  {
    $project: {
      listing_url: 1,
      name: 1,
      property_type: 1,
      bed: 1,
      price: 1,
      cancellation_policy: 1
    }
  }
])

Output:

  {
    _id: '10209136',
    listing_url: 'https://www.airbnb.com/rooms/10209136',
    name: 'Friendly Apartment, 10m from Manly',
    property_type: 'Apartment',
    cancellation_policy: 'flexible',
    price: Decimal128("36.00")
  },
  {
    _id: '10220130',
    listing_url: 'https://www.airbnb.com/rooms/10220130',
    name: 'Cozy aptartment in Recreio (near Olympic Venues)',
    property_type: 'Apartment',
    cancellation_policy: 'flexible',
    price: Decimal128("746.00")
  },
  {
    _id: '10228731',
    listing_url: 'https://www.airbnb.com/rooms/10228731',
    name: 'Quarto inteiro na Tijuca',
    property_type: 'Apartment',
    cancellation_policy: 'flexible',
    price: Decimal128("149.00")
  },
  {
    _id: '10295352',
    listing_url: 'https://www.airbnb.com/rooms/10295352',
    name: 'Amazing and Big Apt, Ipanema Beach.',
    property_type: 'Apartment',
    cancellation_policy: 'flexible',
    price: Decimal128("1999.00")
  },
  {
    _id: '10306879',
    listing_url: 'https://www.airbnb.com/rooms/10306879',
    name: 'Alugo Apart frente mar Barra Tijuca',
    property_type: 'Apartment',
    cancellation_policy: 'flexible',
    price: Decimal128("933.00")
  }

.....

Explanation:

The said query in MongoDB that retrieves all the documents with the listing_url, name, property_type, bed, price, and cancellation_policy fields from the listingsAndReviews collection have a cancellation policy set to "flexible".

The $match stage filters the documents based on the the cancellation_policy field has a value of "flexible".

The $project stage includes the listing_url, name, property_type, bed, price, and cancellation_policy, so their values set to 1.

Improve this sample solution and post your code through Disqus.

Previous: Find listings with high price and security deposit.
Next: Find listings with real bed and kitchen amenity.

What is the difficulty level of this exercise?



Follow us on Facebook and Twitter for latest update.