Question du test MongoDB

Persister une commande concernant des disponibilités données est atomique, Lister les ids des paysagistes ayant déjà travaillé avec un client donné nécessite exactement 2 requêtes

Difficile

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 :

Auteur: InconnuStatut : PubliéeQuestion passée 259 fois
Modifier
0
Évaluations de la communautéPersonne n'a encore évalué cette question, soyez le premier !