mongodb-rag-core
Version:
Common elements used by MongoDB Chatbot Framework components.
40 lines • 1.77 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getDatabaseMetadata = void 0;
const mongodb_schema_1 = require("mongodb-schema");
const extractDeterministicSampleOfDocuments_1 = require("./extractDeterministicSampleOfDocuments");
const truncateDbOperationOutputForLlm_1 = require("../truncateDbOperationOutputForLlm");
async function getDatabaseMetadata({ mongoClient, databaseName, numSamplesPerCollection, latestDate, }) {
const db = mongoClient.db(databaseName);
const collections = await db.listCollections().toArray();
const collectionsMetadata = [];
for (const collection of collections) {
const collectionMetadata = await getCollectionMetadata(db, collection.name, numSamplesPerCollection);
collectionsMetadata.push(collectionMetadata);
}
return {
databaseName,
collections: collectionsMetadata,
latestDate,
};
}
exports.getDatabaseMetadata = getDatabaseMetadata;
async function getCollectionMetadata(db, collectionName, sampleDocumentLimit) {
const collection = db.collection(collectionName);
const indexes = (await collection
.listIndexes()
.toArray());
const exampleDocuments = await (0, extractDeterministicSampleOfDocuments_1.extractDeterministicSampleOfDocuments)({
collection,
limit: sampleDocumentLimit,
});
const exampleDocumentsTruncated = (0, truncateDbOperationOutputForLlm_1.truncateDbOperationOutputForLlm)(exampleDocuments);
const schema = await (0, mongodb_schema_1.getSimplifiedSchema)(exampleDocuments);
return {
schema,
indexes,
collectionName,
exampleDocuments: exampleDocumentsTruncated,
};
}
//# sourceMappingURL=getDatabaseMetadata.js.map