UpdateCollection
Modify an existing collection in Astra DB by renaming it using the specified new name. Simplifies database management through direct updates.
Instructions
Update an existing collection in the database
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| collectionName | Yes | Name of the collection to update | |
| newName | Yes | New name for the collection |
Input Schema (JSON Schema)
{
"properties": {
"collectionName": {
"description": "Name of the collection to update",
"type": "string"
},
"newName": {
"description": "New name for the collection",
"type": "string"
}
},
"required": [
"collectionName",
"newName"
],
"type": "object"
}
Implementation Reference
- tools/UpdateCollection.ts:17-76 (handler)The core handler function that renames a collection by creating a new one with the same data and vector settings, copying documents, and dropping the old collection.export async function UpdateCollection(params: { collectionName: string; newName: string; }) { const { collectionName, newName } = params; // Check if source collection exists const collections = await db.listCollections(); const sourceCollectionExists = collections.some( (collection) => collection.name === collectionName ); if (!sourceCollectionExists) { throw new Error(`Collection '${collectionName}' does not exist`); } // Check if target collection already exists const targetCollectionExists = collections.some( (collection) => collection.name === newName ); if (targetCollectionExists) { throw new Error(`Collection '${newName}' already exists`); } // Create new collection const sourceCollection = db.collection(collectionName); // Get the source collection info to preserve settings const collectionInfo = await sourceCollection.find({}).limit(1).toArray(); const hasVectors = collectionInfo.length > 0 && collectionInfo[0].$vector !== undefined; // Create the new collection with the same settings if (hasVectors) { const vectorDimension = collectionInfo[0].$vector.length; await db.createCollection(newName, { vector: { dimension: vectorDimension, }, }); } else { await db.createCollection(newName); } // Copy data const targetCollection = db.collection(newName); const documents = await sourceCollection.find({}).toArray(); if (documents.length > 0) { await targetCollection.insertMany(documents); } // Delete the old collection await db.dropCollection(collectionName); return { success: true, message: `Collection '${collectionName}' renamed to '${newName}' successfully`, }; }
- tools.ts:85-102 (schema)The tool schema definition including name, description, and input validation schema for UpdateCollection.{ name: "UpdateCollection", description: "Update an existing collection in the database", inputSchema: { type: "object", properties: { collectionName: { type: "string", description: "Name of the collection to update", }, newName: { type: "string", description: "New name for the collection", }, }, required: ["collectionName", "newName"], }, },
- index.ts:113-125 (registration)The dispatch case in the CallToolRequest handler that invokes the UpdateCollection function.case "UpdateCollection": const updateResult = await UpdateCollection({ collectionName: args.collectionName as string, newName: args.newName as string, }); return { content: [ { type: "text", text: updateResult.message, }, ], };
- index.ts:61-65 (registration)Registration of the listTools capability which includes UpdateCollection via the imported tools array.server.setRequestHandler(ListToolsRequestSchema, async () => { return { tools, }; });