$range - Amazon DocumentDB

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

$range

L'opérateur d'$rangeagrégation dans Amazon DocumentDB est utilisé pour créer un tableau de nombres consécutifs dans une plage spécifiée. Cet opérateur est particulièrement utile pour générer des séquences de chiffres, telles que des marqueurs de miles pour les postes de ravitaillement lors d'une course, comme le montrent les exemples ci-dessous.

Paramètres

  • start: valeur de départ de la plage.

  • end: valeur finale de la plage.

  • step: (facultatif) La valeur d'étape à utiliser lors de la génération de la plage. Si elle n'est pas fournie, la valeur d'étape par défaut est 1.

Exemple (MongoDB Shell)

Dans cet exemple, nous allons utiliser l'$rangeopérateur pour générer les bornes kilométriques pour les stations d'eau lors d'une course cycliste.

Création d'exemples de documents

db.races.insertMany([ { _id: 0, race: "STP", distance: 206 }, { _id: 1, race: "RSVP", distance: 160 }, { _id: 2, race: "Chilly Hilly", distance: 33 }, { _id: 3, race: "Flying Wheels", distance: 100 } ]);

Exemple de requête

db.races.aggregate([ { $project: { race: 1, "waterStations": { $range: [20, "$distance", 20] } } } ]);

Sortie

[ { _id: 0, race: 'STP', waterStations: [ 20, 40, 60, 80, 100, 120, 140, 160, 180, 200 ] }, { _id: 1, race: 'RSVP', waterStations: [ 20, 40, 60, 80, 100, 120, 140 ] }, { _id: 2, race: 'Chilly Hilly', waterStations: [ 20 ] }, { _id: 3, race: 'Flying Wheels', waterStations: [ 20, 40, 60, 80 ] } ]

Exemples de code

Pour afficher un exemple de code relatif à l'utilisation de la $range commande, choisissez l'onglet correspondant à la langue que vous souhaitez utiliser :

Node.js
const { MongoClient } = require('mongodb'); async function example() { const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false'); try { await client.connect(); const db = client.db('test'); const collection = db.collection('races'); const pipeline = [ { $project: { race: 1, waterStations: { $range: [20, "$distance", 20] } } } ]; const results = await collection.aggregate(pipeline).toArray(); console.dir(results, { depth: null }); } finally { await client.close(); } } example().catch(console.error);
Python
from pymongo import MongoClient def example(): client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false') try: db = client.test collection = db.races pipeline = [ { "$project": { "race": 1, "waterStations": { "$range": [20, "$distance", 20] } } } ] results = collection.aggregate(pipeline) for doc in results: print(doc) except Exception as e: print(f"An error occurred: {e}") finally: client.close() example()