J'utilise MongoDB Compass et je n'ai pas Mongo Shell. J'ai besoin de créer une requête à l'aide de l'outil MongoDB Compass pour sélectionner des valeurs distinctes du champ "genre" de ma collection.
Exemple d'entrée:
{"_id":{"$oid":"58c59c6a99d4ee0af9e0c34e"},"title":"Bateau-mouche sur la Seine","year":{"$numberInt":"1896"},"imdbId":"tt0000042","genre":["Documentary”,”Short”],"viewerRating":{"$numberDouble":"3.8"},"viewerVotes":{"$numberInt":"17"},"director":"Georges Mlis"}
{"_id":{"$oid":"58c59c6a99d4ee0af9e0c340"},"title":"Watering the Flowers","year":{"$numberInt":"1896"},"imdbId":"tt0000035","genre":["Short”],"viewerRating":{"$numberDouble":"5.3"},"viewerVotes":{"$numberInt":"33"},"director":"Georges M�li�s"}
{"_id":{"$oid":"58c59c6a99d4ee0af9e0c34a"},"title":"The Boxing Kangaroo","year":{"$numberInt":"1896"},"imdbId":"tt0000048","genre":["Short”],"viewerRating":{"$numberDouble":"5.2"},"viewerVotes":{"$numberInt":"48"},"director":"Birt Acres"}
Résultat attendu : Documentaire, Court
Merci, Christian pour ta réponse. J'ai développé la réponse ci-dessous sur la base de votre suggestion.
Mon pipeline:
[{$project: {
genres: {$split: ["$genre",", " ]}
}
}, {$unwind: {
path: "$genres",
includeArrayIndex: 'string',
preserveNullAndEmptyArrays: true
}}, {$group: {
_id: null,
unique_genres: {
$addToSet: '$genres'
}
}}]
Vous pouvez le faire via le cadre d'agrégation dans Compass, en utilisant $ unwind et $ group . Le déroulement de $ est effectué pour créer un document unique pour chaque élément du tableau cible, ce qui permet à l'opérateur $ addToSet dans la phase de groupe $ de capturer ensuite les genres en tant qu'éléments distincts.
Pipeline:
[
{
$unwind: {
path: '$genre',
preserveNullAndEmptyArrays: true
}
},
{
$group: {
_id: null,
uniqueGenres: { $addToSet: '$genre' }
}
}
]
Voir la capture d'écran ci-dessous pour un exemple de boussole: