Question du test MongoDB

Comment utiliser la fonction aggregate en MongoDB

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 décidez d'écrire les disponibilités des paysagistes en embbeded dans la collection paysagistes :

{
   _id: ObjectId("4c0791e2b9ec877893f3363a"),
   name: "John Lennon",
   services: ['sculpture', 'allées', 'labyrinthes'],
   disponibilites: [{
_id: ObjectId("4c0791e2b9ec877893f3363d"),
              	start_date: ISODate("2010-04-30T00:00:00.000Z"),
end_date: ISODate("2010-04-31T00:00:00.000Z")
},
            	{
   		_id: ObjectId("4c0791e2b9ec877893f3363e")
              	start_date: ISODate("2010-06-10T00:00:00.000Z"),
   		end_date: ISODate("2010-06-22T00:00:00.000Z")
            	}]
 }

Vous devez écrire la requête permettant de compter le nombre de paysagistes ayant un certain service et au moins un jour de disponible entre deux dates fournies :

Etant donné la structure des données, quel est le type d'agrégation mongo le plus simple permettant de retourner le résultat demandé ?

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