Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
L’opérateur $sampleRate échantillonne de façon aléatoire les documents d’une collection en fonction d’un taux de probabilité spécifié. Cet opérateur est utile pour l’analyse statistique, le test avec des données de sous-ensemble et l’optimisation des performances lors de l’utilisation de jeux de données volumineux où vous avez besoin d’un échantillon représentatif.
Syntaxe
{
$match: {
$sampleRate: <number>
}
}
Paramètres
| Paramètre | Descriptif |
|---|---|
number |
Nombre à virgule flottante compris entre 0 et 1 représentant la probabilité qu’un document soit inclus dans l’exemple. Par exemple, 0,33 signifie qu’environ 33% de documents sont échantillonné. |
Examples
Considérez cet exemple de document de la collection des magasins.
{
"_id": "0fcc0bf0-ed18-4ab8-b558-9848e18058f4",
"name": "First Up Consultants | Beverage Shop - Satterfieldmouth",
"location": {
"lat": -89.2384,
"lon": -46.4012
},
"staff": {
"totalStaff": {
"fullTime": 8,
"partTime": 20
}
},
"sales": {
"totalSales": 75670,
"salesByCategory": [
{
"categoryName": "Wine Accessories",
"totalSales": 34440
},
{
"categoryName": "Bitters",
"totalSales": 39496
},
{
"categoryName": "Rum",
"totalSales": 1734
}
]
},
"promotionEvents": [
{
"eventName": "Unbeatable Bargain Bash",
"promotionalDates": {
"startDate": {
"Year": 2024,
"Month": 6,
"Day": 23
},
"endDate": {
"Year": 2024,
"Month": 7,
"Day": 2
}
},
"discounts": [
{
"categoryName": "Whiskey",
"discountPercentage": 7
},
{
"categoryName": "Bitters",
"discountPercentage": 15
},
{
"categoryName": "Brandy",
"discountPercentage": 8
},
{
"categoryName": "Sports Drinks",
"discountPercentage": 22
},
{
"categoryName": "Vodka",
"discountPercentage": 19
}
]
},
{
"eventName": "Steal of a Deal Days",
"promotionalDates": {
"startDate": {
"Year": 2024,
"Month": 9,
"Day": 21
},
"endDate": {
"Year": 2024,
"Month": 9,
"Day": 29
}
},
"discounts": [
{
"categoryName": "Organic Wine",
"discountPercentage": 19
},
{
"categoryName": "White Wine",
"discountPercentage": 20
},
{
"categoryName": "Sparkling Wine",
"discountPercentage": 19
},
{
"categoryName": "Whiskey",
"discountPercentage": 17
},
{
"categoryName": "Vodka",
"discountPercentage": 23
}
]
}
]
}
Exemple 1 : Échantillonnage aléatoire de base
Cette requête retourne un tiers de tous les documents de la collection de magasins, sélectionnés de manière aléatoire.
db.stores.aggregate([{
$match: {
$sampleRate: 0.33
}
}])
Exemple 2 : Échantillonnage avec plus de filtres
Cette requête filtre d’abord les magasins avec des ventes supérieures à 50 000, puis échantillonne de manière aléatoire 50% de ces documents correspondants.
db.stores.aggregate([
{ $match: {
"sales.totalSales": { $gt: 50000 },
$sampleRate: 0.5
}}
])
Exemple 3 : Échantillonnage pour l’analyse statistique
Cette requête échantillonne 25% de magasins et calcule les mesures statistiques sur les données échantillonées.
db.stores.aggregate([
{ $match: { $sampleRate: 0.25 } },
{ $group: {
_id: null,
averageSales: { $avg: "$sales.totalSales" },
totalStores: { $sum: 1 },
maxSales: { $max: "$sales.totalSales" },
minSales: { $min: "$sales.totalSales" }
}}
])
L’opérateur $sampleRate est utile pour l’analyse statistique et l’exploration des données lors de l’utilisation de jeux de données volumineux où le traitement de tous les documents serait coûteux en calcul. Il crée efficacement des exemples représentatifs pour les tests de performances, la validation de l’assurance qualité et la génération de jeux de données Machine Learning. L’opérateur est idéal pour les scénarios de création de rapports approximatifs où la précision statistique est acceptable et la vitesse de traitement est hiérarchisée par rapport à la précision exacte.