$slice - Amazon DocumentDB

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

$slice

El operador de $slice actualización modifica una matriz limitando su tamaño. Cuando se usa con el $push operador, restringe el número de elementos de una matriz y mantiene solo el número especificado de elementos más recientes o más antiguos.

Parámetros

  • field: el campo de matriz que se va a modificar.

  • count: Número máximo de elementos que se deben conservar. Los valores positivos mantienen los primeros N elementos, los valores negativos mantienen los N últimos elementos.

Ejemplo (MongoDB Shell)

El siguiente ejemplo demuestra cómo utilizar el operador de $slice actualización con $push para mantener una matriz de partituras recientes de tamaño fijo.

Cree documentos de muestra

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

Ejemplo de consulta

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

Salida

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

En este ejemplo, el $slice: -3 modificador conserva solo los tres últimos elementos después de introducir nuevos valores en la matriz.

Ejemplos de código

Para ver un ejemplo de código para usar el operador de $slice actualización, elija la pestaña correspondiente al idioma que desee usar:

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()