$slice - Amazon DocumentDB

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

$slice

$slice 更新運算子透過限制陣列的大小來修改陣列。與$push運算子搭配使用時,它會限制陣列中的元素數量,只保留指定數量的最新或最舊的元素。

參數

  • field:要修改的陣列欄位。

  • count:要保留的元素數目上限。正值保留前 N 個元素,負值保留最後 N 個元素。

範例 (MongoDB Shell)

下列範例示範如何使用$slice更新運算子搭配 $push來維護最近分數的固定大小陣列。

建立範例文件

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

查詢範例

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

輸出

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

在此範例中,$slice: -3修改器只會在將新值推送至陣列後保留最後三個元素。

程式碼範例

若要檢視使用$slice更新運算子的程式碼範例,請選擇您要使用的語言標籤:

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