Question from the MongoDB test

Persisting an order for given availabilities is atomic, Listing the ids of landscapers who have already worked with a given client requires exactly 2 queries

Hard

CE BLOC EST LE MÊME POUR TOUTES LES QUESTIONS

Vous devez concevoir une marketplace de paysagistes.

Une personne peut s'inscrire en tant que paysagiste. Elle choisit alors les services qu'elle propose parmis une liste préétablie. Elle déclare ensuite - en sélectionnant sur un calendrier - ses disponibilités (une date début et une date de fin, les journées sont toujours entières).

Une autre personne peut s'inscrire sur le site en tant que client. Celle-ci peut alors sélectionner le ou les services que'elle recherche. Une liste de paysagistes lui est alors présentée avec un filtre permettant de ne présenter que les paysagistes disponibles pour certaines journées/périodes.

Si le client trouve un paysagiste adéquat, il peut alors sélectionner les dates dont il a effectivement besoin et passe alors une commande.

Toutes les questions du quizz se réfèrent à ce problème.

####Deux importantes contraintes s'ajoutent pour répondre aux questions:

Aucune redondance de donnée n'est tolérée.

On considèrera le stockage de données structurées (tableau, hash, json, etc.) dans un seul champ de données impossible.

Vous devez maintenant stocker les commandes. Une commande est créée par un client. Elle concerne un paysagiste et une ou plusieurs disponibilités. Les commandes permettent d’afficher les disponibilités libres des paysagistes (en retirant les disponibilités déjà réservées).

Un client peut également lister les commandes qu'il a effectuées.

Une possibilité est de maintenir chaque modèle logique dans sa propre collection comme ceci :

# paysagistes
{
   _id: ObjectId("4c0791e2b9ec877893f3363a"),
   name: "John Lennon",
   services: ['sculpture', 'allées', 'labyrinthes'],
   disponibilites: [ObjectId("4c0791e2b9ec877893f3363d"), ObjectId("4c0791e2b9ec877893f3363e")]
}

# disponibilites   
{
  _id: ObjectId("4c0791e2b9ec877893f3363d"),
  start_date: ISODate("2010-04-30T00:00:00.000Z"),
  end_date: ISODate("2010-04-31T00:00:00.000Z")  
}
         	 
# commandes
{
   _id: ObjectId("4c0791e2b9ec877893f3363f"),
   disponibilities: [ObjectId("4c0791e2b9ec877893f3363d")],
   client: ObjectId("4c0791e2b9ec877893f3363g")
}

# clients
{
   _id: ObjectId("4c0791e2b9ec877893f3363g"),
   commandes: [ObjectId("4c0791e2b9ec877893f3363f")]
}

Sélectionnez les déclarations vraies :

Author: InconnuStatus: PublishedQuestion passed 259 times
Edit
0
Community EvaluationsNo one has reviewed this question yet, be the first!