$slice - 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.

$slice

L'opérateur de $slice mise à jour modifie un tableau en limitant sa taille. Lorsqu'il est utilisé avec l'$pushopérateur, il limite le nombre d'éléments d'un tableau, en ne conservant que le nombre spécifié d'éléments les plus récents ou les plus anciens.

Paramètres

  • field: le champ du tableau à modifier.

  • count: Nombre maximum d'éléments à conserver. Les valeurs positives conservent les N premiers éléments, les valeurs négatives conservent les N derniers éléments.

Exemple (MongoDB Shell)

L'exemple suivant montre comment utiliser l'opérateur de $slice mise à jour with $push pour gérer un tableau de taille fixe des scores récents.

Création d'exemples de documents

db.students.insertOne({ _id: 1, name: "Alice", scores: [85, 90, 78] });

Exemple de requête

db.students.updateOne( { _id: 1 }, { $push: { scores: { $each: [92, 88], $slice: -3 } } } )

Sortie

{ "_id" : 1, "name" : "Alice", "scores" : [ 78, 92, 88 ] }

Dans cet exemple, le $slice: -3 modificateur ne conserve que les trois derniers éléments après avoir introduit de nouvelles valeurs dans le tableau.

Exemples de code

Pour afficher un exemple de code relatif $slice à l'utilisation de l'opérateur de mise à jour, sélectionnez l'onglet correspondant à la langue que vous souhaitez utiliser :

Node.js
const { MongoClient } = require('mongodb'); async function updateDocument() { const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false'); const db = client.db('test'); const collection = db.collection('students'); await collection.updateOne( { _id: 1 }, { $push: { scores: { $each: [92, 88], $slice: -3 } } } ); const updatedDocument = await collection.findOne({ _id: 1 }); console.log(updatedDocument); await client.close(); } updateDocument();
Python
from pymongo import MongoClient def update_document(): client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false') db = client.test collection = db.students collection.update_one( {'_id': 1}, { '$push': { 'scores': { '$each': [92, 88], '$slice': -3 } } } ) updated_document = collection.find_one({'_id': 1}) print(updated_document) client.close() update_document()