Add Activepieces integration for workflow automation

- Add Activepieces fork with SmoothSchedule custom piece
- Create integrations app with Activepieces service layer
- Add embed token endpoint for iframe integration
- Create Automations page with embedded workflow builder
- Add sidebar visibility fix for embed mode
- Add list inactive customers endpoint to Public API
- Include SmoothSchedule triggers: event created/updated/cancelled
- Include SmoothSchedule actions: create/update/cancel events, list resources/services/customers

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
poduck
2025-12-18 22:59:37 -05:00
parent 9848268d34
commit 3aa7199503
16292 changed files with 1284892 additions and 4708 deletions

View File

@@ -0,0 +1,33 @@
{
"extends": [
"../../../../.eslintrc.base.json"
],
"ignorePatterns": [
"!**/*"
],
"overrides": [
{
"files": [
"*.ts",
"*.tsx",
"*.js",
"*.jsx"
],
"rules": {}
},
{
"files": [
"*.ts",
"*.tsx"
],
"rules": {}
},
{
"files": [
"*.js",
"*.jsx"
],
"rules": {}
}
]
}

View File

@@ -0,0 +1,7 @@
# pieces-mongodb
This library was generated with [Nx](https://nx.dev).
## Building
Run `nx build pieces-mongodb` to build the library.

View File

@@ -0,0 +1,7 @@
{
"name": "@activepieces/piece-mongodb",
"version": "0.0.11",
"dependencies": {
"mongodb": "6.15.0"
}
}

View File

@@ -0,0 +1,65 @@
{
"name": "pieces-mongodb",
"$schema": "../../../../node_modules/nx/schemas/project-schema.json",
"sourceRoot": "packages/pieces/community/mongodb/src",
"projectType": "library",
"release": {
"version": {
"currentVersionResolver": "git-tag",
"preserveLocalDependencyProtocols": false,
"manifestRootsToUpdate": [
"dist/{projectRoot}"
]
}
},
"tags": [],
"targets": {
"build": {
"executor": "@nx/js:tsc",
"outputs": [
"{options.outputPath}"
],
"options": {
"outputPath": "dist/packages/pieces/community/mongodb",
"tsConfig": "packages/pieces/community/mongodb/tsconfig.lib.json",
"packageJson": "packages/pieces/community/mongodb/package.json",
"main": "packages/pieces/community/mongodb/src/index.ts",
"assets": [
"packages/pieces/community/mongodb/*.md",
{
"input": "packages/pieces/community/mongodb/src/i18n",
"output": "./src/i18n",
"glob": "**/!(i18n.json)"
}
],
"buildableProjectDepsInPackageJsonType": "dependencies",
"updateBuildableProjectDepsInPackageJson": true
},
"dependsOn": [
"^build",
"prebuild"
]
},
"nx-release-publish": {
"options": {
"packageRoot": "dist/{projectRoot}"
}
},
"lint": {
"executor": "@nx/eslint:lint",
"outputs": [
"{options.outputFile}"
]
},
"prebuild": {
"executor": "nx:run-commands",
"options": {
"cwd": "packages/pieces/community/mongodb",
"command": "bun install --no-save --silent"
},
"dependsOn": [
"^build"
]
}
}
}

View File

@@ -0,0 +1,61 @@
{
"Host": "Host",
"Use MongoDB Atlas URL Format": "MongoDB Atlas-URL-Format verwenden",
"Database": "Datenbank",
"Username": "Benutzername",
"Password": "Kennwort",
"Auth Source": "Auth Quelle",
"The hostname or address of the MongoDB server (e.g., localhost:27017 or cluster.example.mongodb.net)": "Hostname oder Adresse des MongoDB-Servers (z.B. localhost:27017 oder cluster.example.mongodb.net)",
"Enable this if connecting to MongoDB Atlas (uses mongodb+srv:// protocol)": "Aktiviere dies, wenn du mit MongoDB Atlas verbunden bist (verwendet mongodb+srv:// Protokoll)",
"The MongoDB database to connect to (can be specified per action if left empty)": "Die MongoDB-Datenbank, mit der eine Verbindung hergestellt werden soll (kann per Aktion angegeben werden, wenn leer bleibt)",
"The username to use for connecting to the MongoDB server": "Der Benutzername für die Verbindung zum MongoDB-Server",
"The password to use to identify at the MongoDB server": "Das Passwort zum Identifizieren auf dem MongoDB-Server",
"The database to authenticate against (default: admin)": "Die zu authentifizierende Datenbank (Standard: Admin)",
"Find Documents": "Dokumente finden",
"Insert Documents": "Dokumente einfügen",
"Update Documents": "Dokumente aktualisieren",
"Delete Documents": "Dokumente löschen",
"Find and Update Documents": "Dokumente finden und aktualisieren",
"Find and Replace Documents": "Dokumente suchen und ersetzen",
"Aggregate Documents": "Dokumente zusammenfassen",
"Find documents in a collection": "Dokumente in einer Sammlung finden",
"Insert one or more documents into a collection": "Ein oder mehrere Dokumente in eine Sammlung einfügen",
"Update multiple documents in a collection": "Mehrere Dokumente in einer Sammlung aktualisieren",
"Delete documents from a collection": "Dokumente aus einer Sammlung löschen",
"Find documents and update them, returning the updated documents": "Dokumente finden und aktualisieren, die aktualisierten Dokumente zurückgeben",
"Replace documents that match a filter with a new document": "Dokumente, die einem Filter entsprechen, durch ein neues Dokument ersetzen",
"Perform aggregation operations on documents in a collection": "Aggregation Operationen auf Dokumenten in einer Sammlung durchführen",
"Collection": "Sammlung",
"Query": "Abfrage",
"Projection": "Projektion",
"Sort": "Sortieren",
"Limit": "Limit",
"Skip": "Überspringen",
"Documents": "Dokumente",
"Filter": "Filtern",
"Update": "Aktualisieren",
"Upsert": "Hochglanz",
"Return Updated Documents": "Aktualisierte Dokumente zurückgeben",
"Replacement Document": "Ersetzungs-Dokument",
"Return Document": "Dokument zurückgeben",
"Aggregation Pipeline": "Aggregation Pipeline",
"The MongoDB database to connect to (from your authentication)": "Die MongoDB-Datenbank zur Verbindung (von Ihrer Authentifizierung)",
"MongoDB query to filter documents (e.g., {\"status\": \"active\"})": "MongoDB-Abfrage, um Dokumente zu filtern (z.B. {\"status\": \"aktiv\"})",
"Fields to include or exclude (e.g., {\"name\": 1, \"_id\": 0})": "Felder die hinzugefügt oder ausgeschlossen werden sollen (z.B. {\"name\": 1, \"_id\": 0})",
"Sort criteria (e.g., {\"createdAt\": -1})": "Sortierkriterien (z.B. {\"createdAt\": -1})",
"Maximum number of documents to return": "Maximale Anzahl der zurückzusenden Dokumente",
"Number of documents to skip": "Anzahl der zu überspringenden Dokumente",
"Document(s) to insert. Can be a single document object or an array of documents.": "Dokument(e) zum Einfügen. Kann ein einzelnes Dokumentobjekt oder ein Array von Dokumenten sein.",
"MongoDB query to select documents to update (e.g., {\"status\": \"pending\"})": "MongoDB-Abfrage, um zu aktualisierende Dokumente auszuwählen (z.B. {\"status\": \"Ausstehend\"})",
"MongoDB update operations (e.g., {\"$set\": {\"status\": \"completed\"}})": "MongoDB Aktualisierungsvorgänge (z. B. {\"$set\": {\"status\": \"abgeschlossen\"}})",
"Insert a document if no documents match the filter": "Fügen Sie ein Dokument ein, wenn keine Dokumente mit dem Filter übereinstimmen",
"MongoDB query to select documents to delete (e.g., {\"status\": \"archived\"})": "MongoDB-Abfrage, um zu löschende Dokumente auszuwählen (z.B. {\"status\": \"archiviert\"})",
"Return the documents after updates are applied": "Die Dokumente nach Updates zurückgeben",
"MongoDB query to select documents to replace (e.g., {\"_id\": \"123\"})": "MongoDB-Abfrage, um zu ersetzende Dokumente auszuwählen (z.B. {\"_id\": \"123\"})",
"New document that will replace the matched documents": "Neues Dokument, das die zugehörigen Dokumente ersetzen wird",
"Insert the document if no documents match the filter": "Fügen Sie das Dokument ein, wenn keine Dokumente mit dem Filter übereinstimmen",
"Which version of the document to return": "Welche Version des Dokuments zurückgegeben werden soll",
"Array of aggregation stages (e.g., [{\"$match\": {\"status\": \"active\"}}, {\"$group\": {\"_id\": \"$category\", \"count\": {\"$sum\": 1}}}])": "Array der Aggregationsstufen (z. B. [{\"$match\": {\"status\": \"aktive\"}}, {\"$group\": {\"_id\": \"$category\", \"count\": {\"$sum\": 1}}}])",
"Before Update": "Vor dem Update",
"After Update": "Nach dem Update"
}

View File

@@ -0,0 +1,61 @@
{
"Host": "Anfitrión",
"Use MongoDB Atlas URL Format": "Usar el formato de URL de MongoDB Atlas",
"Database": "Base de datos",
"Username": "Usuario",
"Password": "Contraseña",
"Auth Source": "Fuente Auth",
"The hostname or address of the MongoDB server (e.g., localhost:27017 or cluster.example.mongodb.net)": "El nombre de host o la dirección del servidor MongoDB (por ejemplo, localhost:27017 o cluster.example.mongodb.net)",
"Enable this if connecting to MongoDB Atlas (uses mongodb+srv:// protocol)": "Habilitar esto si se conecta a MongoDB Atlas (utiliza mongodb+srv:// protocol)",
"The MongoDB database to connect to (can be specified per action if left empty)": "La base de datos de MongoDB a la que conectarse (se puede especificar por acción si se deja vacío)",
"The username to use for connecting to the MongoDB server": "El nombre de usuario a utilizar para conectarse al servidor MongoDB",
"The password to use to identify at the MongoDB server": "La contraseña a usar para identificar en el servidor MongoDB",
"The database to authenticate against (default: admin)": "La base de datos contra la que autenticar (predeterminado: admin)",
"Find Documents": "Buscar documentos",
"Insert Documents": "Insertar documentos",
"Update Documents": "Actualizar documentos",
"Delete Documents": "Eliminar documentos",
"Find and Update Documents": "Buscar y actualizar documentos",
"Find and Replace Documents": "Buscar y reemplazar documentos",
"Aggregate Documents": "Agregar documentos",
"Find documents in a collection": "Buscar documentos en una colección",
"Insert one or more documents into a collection": "Inserta uno o más documentos en una colección",
"Update multiple documents in a collection": "Actualizar varios documentos en una colección",
"Delete documents from a collection": "Eliminar documentos de una colección",
"Find documents and update them, returning the updated documents": "Encuentre documentos y actualícelos, devolviendo los documentos actualizados",
"Replace documents that match a filter with a new document": "Reemplazar documentos que coincidan con un filtro por un nuevo documento",
"Perform aggregation operations on documents in a collection": "Realizar operaciones de agregación de documentos en una colección",
"Collection": "Colección",
"Query": "Consulta",
"Projection": "Proyección",
"Sort": "Ordenar",
"Limit": "Límite",
"Skip": "Saltar",
"Documents": "Documentos",
"Filter": "Filtro",
"Update": "Actualizar",
"Upsert": "Subir",
"Return Updated Documents": "Devolver documentos actualizados",
"Replacement Document": "Documento de reemplazo",
"Return Document": "Devolver documento",
"Aggregation Pipeline": "Pipeline de agregación",
"The MongoDB database to connect to (from your authentication)": "La base de datos de MongoDB a la que conectarse (desde su autenticación)",
"MongoDB query to filter documents (e.g., {\"status\": \"active\"})": "Consulta MongoDB para filtrar documentos (por ejemplo, {\"status\": \"activo\"})",
"Fields to include or exclude (e.g., {\"name\": 1, \"_id\": 0})": "Campos a incluir o excluir (por ejemplo, {\"nombre\": 1, \"_id\": 0})",
"Sort criteria (e.g., {\"createdAt\": -1})": "Criterios de ordenación (por ej., {\"createdAt\": -1})",
"Maximum number of documents to return": "Número máximo de documentos a devolver",
"Number of documents to skip": "Número de documentos a omitir",
"Document(s) to insert. Can be a single document object or an array of documents.": "Documento(s) a insertar. Puede ser un único objeto de documento o una matriz de documentos.",
"MongoDB query to select documents to update (e.g., {\"status\": \"pending\"})": "Consulta MongoDB para seleccionar documentos a actualizar (por ejemplo, {\"status\": \"pendiente\"})",
"MongoDB update operations (e.g., {\"$set\": {\"status\": \"completed\"}})": "Operaciones de actualización de MongoDB (por ej., {\"$set\": {\"status\": \"completed\"}})",
"Insert a document if no documents match the filter": "Insertar un documento si no hay documentos que coincidan con el filtro",
"MongoDB query to select documents to delete (e.g., {\"status\": \"archived\"})": "Consulta MongoDB para seleccionar documentos a eliminar (por ejemplo, {\"status\": \"archivado\"})",
"Return the documents after updates are applied": "Devolver los documentos después de aplicar las actualizaciones",
"MongoDB query to select documents to replace (e.g., {\"_id\": \"123\"})": "Consulta MongoDB para seleccionar documentos a reemplazar (por ejemplo, {\"_id\": \"123\"})",
"New document that will replace the matched documents": "Nuevo documento que reemplazará los documentos coincidentes",
"Insert the document if no documents match the filter": "Introduzca el documento si no hay documentos que coincidan con el filtro",
"Which version of the document to return": "Qué versión del documento devolver",
"Array of aggregation stages (e.g., [{\"$match\": {\"status\": \"active\"}}, {\"$group\": {\"_id\": \"$category\", \"count\": {\"$sum\": 1}}}])": "Array de etapas de agregación (por ejemplo, [{\"$match\": {\"status\": \"active\"}}, {\"$group\": {\"_id\": \"$category\", \"count\": {\"$sum\": 1}}}])",
"Before Update": "Antes de actualizar",
"After Update": "Después de actualizar"
}

View File

@@ -0,0 +1,61 @@
{
"Host": "Hôte",
"Use MongoDB Atlas URL Format": "Utiliser le format d'URL de l'Atlas MongoDB",
"Database": "Base de données",
"Username": "Nom d'utilisateur",
"Password": "Password",
"Auth Source": "Source d'authentification",
"The hostname or address of the MongoDB server (e.g., localhost:27017 or cluster.example.mongodb.net)": "Le nom d'hôte ou l'adresse du serveur MongoDB (par exemple, localhost:27017 ou cluster.example.mongodb.net)",
"Enable this if connecting to MongoDB Atlas (uses mongodb+srv:// protocol)": "Activer cette option si vous vous connectez à l'Atlas MongoDB (utilise le protocole mongodb+srv:// )",
"The MongoDB database to connect to (can be specified per action if left empty)": "La base de données MongoDB à laquelle se connecter (peut être spécifiée par action si laissé vide)",
"The username to use for connecting to the MongoDB server": "Le nom d'utilisateur à utiliser pour se connecter au serveur MongoDB",
"The password to use to identify at the MongoDB server": "Le mot de passe à utiliser pour vous identifier sur le serveur MongoDB",
"The database to authenticate against (default: admin)": "La base de données contre laquelle s'authentifier (par défaut: admin)",
"Find Documents": "Trouver des documents",
"Insert Documents": "Insérer des documents",
"Update Documents": "Mettre à jour les documents",
"Delete Documents": "Supprimer les documents",
"Find and Update Documents": "Rechercher et mettre à jour les documents",
"Find and Replace Documents": "Rechercher et remplacer des documents",
"Aggregate Documents": "Agréger les Documents",
"Find documents in a collection": "Trouver des documents dans une collection",
"Insert one or more documents into a collection": "Insérer un ou plusieurs documents dans une collection",
"Update multiple documents in a collection": "Mettre à jour plusieurs documents dans une collection",
"Delete documents from a collection": "Supprimer les documents d'une collection",
"Find documents and update them, returning the updated documents": "Trouver des documents et les mettre à jour, renvoyer les documents mis à jour",
"Replace documents that match a filter with a new document": "Remplacer les documents qui correspondent à un filtre par un nouveau document",
"Perform aggregation operations on documents in a collection": "Effectuer des opérations d'agrégation sur les documents d'une collection",
"Collection": "Collecte",
"Query": "Requête",
"Projection": "Projection",
"Sort": "Trier",
"Limit": "Limite",
"Skip": "Ignorer",
"Documents": "Documents",
"Filter": "Filtre",
"Update": "Mise à jour",
"Upsert": "Mettre à jour et insérer",
"Return Updated Documents": "Retourner les documents mis à jour",
"Replacement Document": "Document de remplacement",
"Return Document": "Document de retour",
"Aggregation Pipeline": "Pipeline d'agrégation",
"The MongoDB database to connect to (from your authentication)": "La base de données MongoDB à laquelle se connecter (à partir de votre authentification)",
"MongoDB query to filter documents (e.g., {\"status\": \"active\"})": "Requête MongoDB pour filtrer les documents (par exemple, {\"status\": \"active\"})",
"Fields to include or exclude (e.g., {\"name\": 1, \"_id\": 0})": "Champs à inclure ou exclure (par exemple, {\"name\": 1, \"_id\": 0})",
"Sort criteria (e.g., {\"createdAt\": -1})": "Critères de tri (par exemple, {\"createdAt\": -1})",
"Maximum number of documents to return": "Nombre maximum de documents à retourner",
"Number of documents to skip": "Nombre de documents à ignorer",
"Document(s) to insert. Can be a single document object or an array of documents.": "Document(s) à insérer. Peut être un seul objet document ou un tableau de documents.",
"MongoDB query to select documents to update (e.g., {\"status\": \"pending\"})": "Requête MongoDB pour sélectionner les documents à mettre à jour (par exemple, {\"status\": \"en attente\"})",
"MongoDB update operations (e.g., {\"$set\": {\"status\": \"completed\"}})": "Opérations de mise à jour MongoDB (par exemple, {\"$set\": {\"status\": \"completed\"}})",
"Insert a document if no documents match the filter": "Insérer un document si aucun document ne correspond au filtre",
"MongoDB query to select documents to delete (e.g., {\"status\": \"archived\"})": "Requête MongoDB pour sélectionner les documents à supprimer (par exemple, {\"status\": \"archivé\"})",
"Return the documents after updates are applied": "Retourner les documents après l'application des mises à jour",
"MongoDB query to select documents to replace (e.g., {\"_id\": \"123\"})": "Requête MongoDB pour sélectionner les documents à remplacer (par exemple, {\"_id\": \"123\"})",
"New document that will replace the matched documents": "Nouveau document qui remplacera les documents correspondants",
"Insert the document if no documents match the filter": "Insérez le document si aucun document ne correspond au filtre",
"Which version of the document to return": "Quelle version du document à retourner",
"Array of aggregation stages (e.g., [{\"$match\": {\"status\": \"active\"}}, {\"$group\": {\"_id\": \"$category\", \"count\": {\"$sum\": 1}}}])": "Tableau de phases d'agrégation (par exemple, [{\"$match\": {\"status\": \"active\"}}, {\"$group\": {\"_id\": \"$category\", \"count\": {\"$sum\": 1}}}])",
"Before Update": "Avant la mise à jour",
"After Update": "Après mise à jour"
}

View File

@@ -0,0 +1,61 @@
{
"Host": "ホスト",
"Use MongoDB Atlas URL Format": "MongoDBアトラスのURL形式を使用する",
"Database": "データベース",
"Username": "ユーザー名",
"Password": "Password",
"Auth Source": "認証ソース",
"The hostname or address of the MongoDB server (e.g., localhost:27017 or cluster.example.mongodb.net)": "MongoDBサーバーのホスト名またはアドレス (例: localhost:27017 または cluster.example.mongodb.net)",
"Enable this if connecting to MongoDB Atlas (uses mongodb+srv:// protocol)": "MongoDB Atlasに接続する場合、これを有効にする (mongodb+srv:// プロトコルを使用)",
"The MongoDB database to connect to (can be specified per action if left empty)": "接続先のMongoDBデータベース空の場合はアクションごとに指定できます",
"The username to use for connecting to the MongoDB server": "MongoDBサーバーに接続するために使用するユーザー名",
"The password to use to identify at the MongoDB server": "MongoDBサーバーで識別するために使用するパスワード",
"The database to authenticate against (default: admin)": "認証するデータベースデフォルトadmin",
"Find Documents": "ドキュメントを検索",
"Insert Documents": "ドキュメントの挿入",
"Update Documents": "ドキュメントの更新",
"Delete Documents": "ドキュメントの削除",
"Find and Update Documents": "ドキュメントの検索と更新",
"Find and Replace Documents": "ドキュメントの検索と置換",
"Aggregate Documents": "ドキュメントの集計数",
"Find documents in a collection": "コレクション内のドキュメントを検索",
"Insert one or more documents into a collection": "コレクションに1つまたは複数のドキュメントを挿入",
"Update multiple documents in a collection": "コレクション内の複数のドキュメントを更新",
"Delete documents from a collection": "コレクションからドキュメントを削除",
"Find documents and update them, returning the updated documents": "文書を見つけて更新し、更新された文書を返します",
"Replace documents that match a filter with a new document": "フィルタに一致するドキュメントを新しいドキュメントに置き換えます",
"Perform aggregation operations on documents in a collection": "コレクション内のドキュメントに対する集計操作を実行",
"Collection": "コレクション",
"Query": "クエリ",
"Projection": "投影図",
"Sort": "並べ替え",
"Limit": "制限",
"Skip": "スキップ",
"Documents": "ドキュメント",
"Filter": "フィルター",
"Update": "更新",
"Upsert": "Upsert",
"Return Updated Documents": "更新された文書を返却する",
"Replacement Document": "置き換え文書",
"Return Document": "ドキュメントを戻る",
"Aggregation Pipeline": "集計パイプライン",
"The MongoDB database to connect to (from your authentication)": "接続先のMongoDBデータベース (認証から)",
"MongoDB query to filter documents (e.g., {\"status\": \"active\"})": "ドキュメントをフィルタするためのMongoDBクエリ (例: {\"status\": \"active\"})",
"Fields to include or exclude (e.g., {\"name\": 1, \"_id\": 0})": "含めるか除外するフィールド (例: {\"name\": 1, \"_id\": 0})",
"Sort criteria (e.g., {\"createdAt\": -1})": "ソート条件 (例: {\"createdAt\": -1})",
"Maximum number of documents to return": "返却するドキュメントの最大数",
"Number of documents to skip": "スキップするドキュメントの数",
"Document(s) to insert. Can be a single document object or an array of documents.": "挿入するドキュメント。単一のドキュメントオブジェクトまたはドキュメントの配列にすることができます。",
"MongoDB query to select documents to update (e.g., {\"status\": \"pending\"})": "更新するドキュメントを選択するためのMongoDBクエリ{\"status\": \"pending\"})",
"MongoDB update operations (e.g., {\"$set\": {\"status\": \"completed\"}})": "MongoDB 更新操作 (例: {\"$set\": {\"status\": \"completed\"}})",
"Insert a document if no documents match the filter": "フィルタに一致するドキュメントがない場合はドキュメントを挿入します",
"MongoDB query to select documents to delete (e.g., {\"status\": \"archived\"})": "削除するドキュメントを選択するためのMongoDBクエリ{\"status\": \"archived\"})",
"Return the documents after updates are applied": "更新が適用された後にドキュメントを返します。",
"MongoDB query to select documents to replace (e.g., {\"_id\": \"123\"})": "置き換えるドキュメントを選択するためのMongoDBクエリ{\"_id\": \"123\"})",
"New document that will replace the matched documents": "一致したドキュメントを置き換える新しいドキュメント",
"Insert the document if no documents match the filter": "フィルタに一致するドキュメントがない場合はドキュメントを挿入します",
"Which version of the document to return": "返却するドキュメントのバージョン",
"Array of aggregation stages (e.g., [{\"$match\": {\"status\": \"active\"}}, {\"$group\": {\"_id\": \"$category\", \"count\": {\"$sum\": 1}}}])": "アグリゲーションステージの配列 (例: [{\"$match\": {\"status\": \"active\"}}, {\"$group\": {\"_id\": \"$category\", \"count\": {\"$sum\": 1}}}])",
"Before Update": "更新前",
"After Update": "アップデート後"
}

View File

@@ -0,0 +1,61 @@
{
"Host": "Hostnaam",
"Use MongoDB Atlas URL Format": "Gebruik MongoDB Atlas URL-indeling",
"Database": "Database",
"Username": "Gebruikersnaam",
"Password": "Wachtwoord",
"Auth Source": "Authenticatie Bron",
"The hostname or address of the MongoDB server (e.g., localhost:27017 or cluster.example.mongodb.net)": "De hostnaam of het adres van de MongoDB-server (bijv. localhost:27017 of cluster.example.mongodb.net)",
"Enable this if connecting to MongoDB Atlas (uses mongodb+srv:// protocol)": "Schakel dit in als je verbinding maakt met MongoDB Atlas (gebruikt mongodb+srv:// protocol)",
"The MongoDB database to connect to (can be specified per action if left empty)": "De database van MongoDB waarmee u verbinding wilt maken (kan worden opgegeven per actie indien leeg)",
"The username to use for connecting to the MongoDB server": "De gebruikersnaam om te gebruiken voor het verbinden met de MongoDB-server",
"The password to use to identify at the MongoDB server": "Het wachtwoord dat moet worden gebruikt om te identificeren op de MongoDB-server",
"The database to authenticate against (default: admin)": "De database om mee te verifiëren (standaard: admin)",
"Find Documents": "Documenten zoeken",
"Insert Documents": "Documenten invoegen",
"Update Documents": "Documenten bijwerken",
"Delete Documents": "Documenten verwijderen",
"Find and Update Documents": "Vind en update documenten",
"Find and Replace Documents": "Zoeken en vervangen documenten",
"Aggregate Documents": "Samenvoegen documenten",
"Find documents in a collection": "Vind documenten in een collectie",
"Insert one or more documents into a collection": "Een of meer documenten toevoegen aan een collectie",
"Update multiple documents in a collection": "Meerdere documenten in een collectie bijwerken",
"Delete documents from a collection": "Documenten uit een collectie verwijderen",
"Find documents and update them, returning the updated documents": "Zoek documenten en werk ze bij, retourneer de bijgewerkte documenten",
"Replace documents that match a filter with a new document": "Vervang documenten die overeenkomen met een filter met een nieuw document",
"Perform aggregation operations on documents in a collection": "Voer aggregatie operaties uit op documenten in een collectie",
"Collection": "Collectie",
"Query": "Zoekopdracht",
"Projection": "Projectie",
"Sort": "Sorteren",
"Limit": "Limiet",
"Skip": "Overslaan",
"Documents": "Documenten",
"Filter": "Filteren",
"Update": "Vernieuwen",
"Upsert": "In de buurt",
"Return Updated Documents": "Retour Bijgewerkte documenten",
"Replacement Document": "Vervanging document",
"Return Document": "Retour document",
"Aggregation Pipeline": "Aggregatie Pijplijn",
"The MongoDB database to connect to (from your authentication)": "De database van MongoDB waar u verbinding mee wilt maken (vanaf uw authenticatie)",
"MongoDB query to filter documents (e.g., {\"status\": \"active\"})": "MongoDB query om documenten te filteren (bijv. {\"status\": \"actief\"})",
"Fields to include or exclude (e.g., {\"name\": 1, \"_id\": 0})": "Velden om op te nemen of uit te sluiten (bijv. {\"naam\": 1, \"_id\": 0})",
"Sort criteria (e.g., {\"createdAt\": -1})": "Sorteer criteria (bijv. {\"aangemaaktAt\": -1})",
"Maximum number of documents to return": "Maximum aantal documenten om te retourneren",
"Number of documents to skip": "Aantal documenten om over te slaan",
"Document(s) to insert. Can be a single document object or an array of documents.": "Document(en) om in te voegen. Kan een enkel document-object of een reeks documenten zijn.",
"MongoDB query to select documents to update (e.g., {\"status\": \"pending\"})": "MongoDB query om te updaten documenten (bijv. {\"status\": \"in behandeling\"})",
"MongoDB update operations (e.g., {\"$set\": {\"status\": \"completed\"}})": "MongoDB update bewerkingen (bijv. {\"$set\": {\"status\": \"voltooid\"}})",
"Insert a document if no documents match the filter": "Voeg een document toe als er geen documenten overeenkomen met de filter",
"MongoDB query to select documents to delete (e.g., {\"status\": \"archived\"})": "MongoDB query om documenten te verwijderen (bijv. {\"status\": \"gearchiveer\"})",
"Return the documents after updates are applied": "Retourneer de documenten na updates worden toegepast",
"MongoDB query to select documents to replace (e.g., {\"_id\": \"123\"})": "MongoDB query om documenten te vervangen (bijv. {\"_id\": \"123\"})",
"New document that will replace the matched documents": "Nieuw document dat de overeenkomstige documenten vervangt",
"Insert the document if no documents match the filter": "Voeg het document in als er geen documenten overeenkomen met de filter",
"Which version of the document to return": "Welke versie van het document om terug te keren",
"Array of aggregation stages (e.g., [{\"$match\": {\"status\": \"active\"}}, {\"$group\": {\"_id\": \"$category\", \"count\": {\"$sum\": 1}}}])": "Array of aggregation stages (bijv. [{\"$match\": {\"status\": \"active\"}}, {\"$group\": {\"_id\": \"$category\", \"count\": {\"$sum\": 1}}}])",
"Before Update": "Voor het bijwerken",
"After Update": "Na het bijwerken"
}

View File

@@ -0,0 +1,61 @@
{
"Host": "Servidor",
"Use MongoDB Atlas URL Format": "Use o formato de URL do MongoDB Atlas",
"Database": "Banco",
"Username": "Usuário:",
"Password": "Senha",
"Auth Source": "Fonte de Autenticação",
"The hostname or address of the MongoDB server (e.g., localhost:27017 or cluster.example.mongodb.net)": "O nome do host ou endereço do servidor MongoDB (por exemplo, localhost:27017 ou cluster.exemplo.mongodb.net)",
"Enable this if connecting to MongoDB Atlas (uses mongodb+srv:// protocol)": "Ative esta opção se conectando ao Atlas MongoDB (usa mongodb+srv:// protocolo)",
"The MongoDB database to connect to (can be specified per action if left empty)": "O banco de dados do MongoDB a ser conectado (pode ser especificado por ação se deixado vazio)",
"The username to use for connecting to the MongoDB server": "O nome de usuário a ser usado para conexão com o servidor MongoDB",
"The password to use to identify at the MongoDB server": "A senha a ser usada para identificar no servidor MongoDB",
"The database to authenticate against (default: admin)": "O banco de dados para autenticar (padrão: administrador)",
"Find Documents": "Encontrar documentos",
"Insert Documents": "Inserir Documentos",
"Update Documents": "Atualizar documentos",
"Delete Documents": "Excluir Documentos",
"Find and Update Documents": "Localizar e atualizar documentos",
"Find and Replace Documents": "Localizar e Substituir Documentos",
"Aggregate Documents": "Documentos Agregados",
"Find documents in a collection": "Encontrar documentos em uma coleção",
"Insert one or more documents into a collection": "Inserir um ou mais documentos em uma coleção",
"Update multiple documents in a collection": "Atualizar vários documentos em uma coleção",
"Delete documents from a collection": "Excluir documentos de uma coleção",
"Find documents and update them, returning the updated documents": "Encontrar documentos e atualizá-los, devolvendo documentos atualizados",
"Replace documents that match a filter with a new document": "Substituir documentos que correspondem a um filtro por um novo documento",
"Perform aggregation operations on documents in a collection": "Realizar operações de agregação em documentos em uma coleção",
"Collection": "Coleção",
"Query": "Requisição",
"Projection": "Projeção",
"Sort": "Ordenar",
"Limit": "Limitar",
"Skip": "Ignorar",
"Documents": "Documentos",
"Filter": "filtro",
"Update": "Atualização",
"Upsert": "Upsert",
"Return Updated Documents": "Retornar Documentos Atualizados",
"Replacement Document": "Documento de substituição",
"Return Document": "Devolver o documento",
"Aggregation Pipeline": "Pipeline de agregação",
"The MongoDB database to connect to (from your authentication)": "O banco de dados MongoDB a ser conectado (a partir da sua autenticação)",
"MongoDB query to filter documents (e.g., {\"status\": \"active\"})": "Consulta MongoDB para filtrar documentos (por exemplo, {\"status\": \"ativo\"})",
"Fields to include or exclude (e.g., {\"name\": 1, \"_id\": 0})": "Campos para incluir ou excluir (por exemplo, {\"name\": 1, \"_id\": 0})",
"Sort criteria (e.g., {\"createdAt\": -1})": "Ordenar critérios (por exemplo, {\"createdAt\": -1})",
"Maximum number of documents to return": "Número máximo de documentos para retornar",
"Number of documents to skip": "Número de documentos a ignorar",
"Document(s) to insert. Can be a single document object or an array of documents.": "Documento(s) a inserir. Pode ser um único objeto de documento ou uma matriz de documentos.",
"MongoDB query to select documents to update (e.g., {\"status\": \"pending\"})": "Consulta MongoDB para selecionar documentos a serem atualizados (por exemplo, {\"status\": \"pendente\"})",
"MongoDB update operations (e.g., {\"$set\": {\"status\": \"completed\"}})": "Operações de atualização do MongoDB (por exemplo, {\"$set\": {\"status\": \"completed\"}})",
"Insert a document if no documents match the filter": "Insira um documento se nenhum documento corresponder ao filtro",
"MongoDB query to select documents to delete (e.g., {\"status\": \"archived\"})": "Consulta do MongoDB para selecionar documentos a serem excluídos (por exemplo, {\"status\": \"archived\"})",
"Return the documents after updates are applied": "Devolver os documentos após que as atualizações forem aplicadas",
"MongoDB query to select documents to replace (e.g., {\"_id\": \"123\"})": "Consulta do MongoDB para selecionar documentos para substituir (por exemplo, {\"_id\": \"123\"})",
"New document that will replace the matched documents": "Novo documento que substituirá os documentos correspondentes",
"Insert the document if no documents match the filter": "Insira o documento se nenhum documento corresponder ao filtro",
"Which version of the document to return": "Qual versão do documento a retornar",
"Array of aggregation stages (e.g., [{\"$match\": {\"status\": \"active\"}}, {\"$group\": {\"_id\": \"$category\", \"count\": {\"$sum\": 1}}}])": "Array de estágios de agregação (por exemplo, [{\"$match\": {\"status\": \"active\"}}, {\"$group\": {\"_id\": \"$category\", \"count\": {\"$sum\": 1}}}])",
"Before Update": "Antes da atualização",
"After Update": "Após atualização"
}

View File

@@ -0,0 +1,62 @@
{
"MongoDB": "MongoDB",
"Host": "Хост",
"Use MongoDB Atlas URL Format": "Использовать формат URL-адреса MongoDB Atlas",
"Database": "База данных",
"Username": "Имя пользователя",
"Password": "Пароль",
"Auth Source": "Источник аутентификации",
"The hostname or address of the MongoDB server (e.g., localhost:27017 or cluster.example.mongodb.net)": "Имя хоста или адрес сервера MongoDB (например, localhost:27017 или cluster.example.mongodb.net)",
"Enable this if connecting to MongoDB Atlas (uses mongodb+srv:// protocol)": "Включите, если подключение к Атласу Mongodb+srv:// протокол)",
"The MongoDB database to connect to (can be specified per action if left empty)": "База данных MongoDB для подключения к (может быть указана за одно действие, если оставить пустым)",
"The username to use for connecting to the MongoDB server": "Имя пользователя для подключения к серверу MongoDB",
"The password to use to identify at the MongoDB server": "Пароль для идентификации на сервере MongoDB",
"The database to authenticate against (default: admin)": "База данных для аутентификации (по умолчанию: admin)",
"Find Documents": "Найти документы",
"Insert Documents": "Вставить документы",
"Update Documents": "Обновить документы",
"Delete Documents": "Удалить документы",
"Find and Update Documents": "Поиск и обновление документов",
"Find and Replace Documents": "Найти и заменить документы",
"Aggregate Documents": "Агрегировать документы",
"Find documents in a collection": "Найти документы в коллекции",
"Insert one or more documents into a collection": "Вставьте один или несколько документов в коллекцию",
"Update multiple documents in a collection": "Обновить несколько документов в коллекции",
"Delete documents from a collection": "Удалить документы из коллекции",
"Find documents and update them, returning the updated documents": "Найдите документы и обновите их, возвращая обновленные документы",
"Replace documents that match a filter with a new document": "Заменить документы, соответствующие фильтру новым документам",
"Perform aggregation operations on documents in a collection": "Выполнение агрегированных операций по документам в сборе",
"Collection": "Коллекция",
"Query": "Запрос",
"Projection": "Проекция",
"Sort": "Сортировка",
"Limit": "Лимит",
"Skip": "Пропустить",
"Documents": "Документы",
"Filter": "Фильтр",
"Update": "Обновить",
"Upsert": "Уверттер",
"Return Updated Documents": "Возврат обновлённых документов",
"Replacement Document": "Заменный документ",
"Return Document": "Вернуть документ",
"Aggregation Pipeline": "Линия агрегации",
"The MongoDB database to connect to (from your authentication)": "База данных MongoDB для подключения к (из вашей аутентификации)",
"MongoDB query to filter documents (e.g., {\"status\": \"active\"})": "MongoDB запрос для фильтрации документов (например, {\"status\": \"active\"})",
"Fields to include or exclude (e.g., {\"name\": 1, \"_id\": 0})": "Поля для включения или исключения (например, {\"name\": 1, \"_id\": 0})",
"Sort criteria (e.g., {\"createdAt\": -1})": "Критерии сортировки (например, {\"createdAt\": -1})",
"Maximum number of documents to return": "Максимальное количество возвращаемых документов",
"Number of documents to skip": "Количество пропущенных документов",
"Document(s) to insert. Can be a single document object or an array of documents.": "Документ(ы) для вставки. Может быть одним документом или массивом документов.",
"MongoDB query to select documents to update (e.g., {\"status\": \"pending\"})": "MongoDB запрос на выбор документов для обновления (например, {\"status\": \"pending\"})",
"MongoDB update operations (e.g., {\"$set\": {\"status\": \"completed\"}})": "Операции обновления MongoDB (например, {\"$set\": {\"status\": \"completed\"}})",
"Insert a document if no documents match the filter": "Вставить документ, если ни один из документов не соответствует фильтру",
"MongoDB query to select documents to delete (e.g., {\"status\": \"archived\"})": "Запрос MongoDB для выбора удаляемых документов (например, {\"status\": \"archived\"})",
"Return the documents after updates are applied": "Возврат документов после их обновления",
"MongoDB query to select documents to replace (e.g., {\"_id\": \"123\"})": "MongoDB запрос на смену документов (например, {\"_id\": \"123\"})",
"New document that will replace the matched documents": "Новый документ, который заменит соответствующие документы",
"Insert the document if no documents match the filter": "Вставить документ, если ни один из документов не соответствует фильтру",
"Which version of the document to return": "Какая версия документа возвращать",
"Array of aggregation stages (e.g., [{\"$match\": {\"status\": \"active\"}}, {\"$group\": {\"_id\": \"$category\", \"count\": {\"$sum\": 1}}}])": "Массив этапов агрегации (например, [{\"$match\": {\"status\": \"active\"}}, {\"$group\": {\"_id\": \"$category\", \"count\": {\"$sum\": 1}}])",
"Before Update": "До обновления",
"After Update": "После обновления"
}

View File

@@ -0,0 +1,61 @@
{
"Host": "Host",
"Use MongoDB Atlas URL Format": "Use MongoDB Atlas URL Format",
"Database": "Database",
"Username": "Username",
"Password": "Password",
"Auth Source": "Auth Source",
"The hostname or address of the MongoDB server (e.g., localhost:27017 or cluster.example.mongodb.net)": "The hostname or address of the MongoDB server (e.g., localhost:27017 or cluster.example.mongodb.net)",
"Enable this if connecting to MongoDB Atlas (uses mongodb+srv:// protocol)": "Enable this if connecting to MongoDB Atlas (uses mongodb+srv:// protocol)",
"The MongoDB database to connect to (can be specified per action if left empty)": "The MongoDB database to connect to (can be specified per action if left empty)",
"The username to use for connecting to the MongoDB server": "The username to use for connecting to the MongoDB server",
"The password to use to identify at the MongoDB server": "The password to use to identify at the MongoDB server",
"The database to authenticate against (default: admin)": "The database to authenticate against (default: admin)",
"Find Documents": "Find Documents",
"Insert Documents": "Insert Documents",
"Update Documents": "Update Documents",
"Delete Documents": "Delete Documents",
"Find and Update Documents": "Find and Update Documents",
"Find and Replace Documents": "Find and Replace Documents",
"Aggregate Documents": "Aggregate Documents",
"Find documents in a collection": "Find documents in a collection",
"Insert one or more documents into a collection": "Insert one or more documents into a collection",
"Update multiple documents in a collection": "Update multiple documents in a collection",
"Delete documents from a collection": "Delete documents from a collection",
"Find documents and update them, returning the updated documents": "Find documents and update them, returning the updated documents",
"Replace documents that match a filter with a new document": "Replace documents that match a filter with a new document",
"Perform aggregation operations on documents in a collection": "Perform aggregation operations on documents in a collection",
"Collection": "Collection",
"Query": "Query",
"Projection": "Projection",
"Sort": "Sort",
"Limit": "Limit",
"Skip": "Skip",
"Documents": "Documents",
"Filter": "Filter",
"Update": "Update",
"Upsert": "Upsert",
"Return Updated Documents": "Return Updated Documents",
"Replacement Document": "Replacement Document",
"Return Document": "Return Document",
"Aggregation Pipeline": "Aggregation Pipeline",
"The MongoDB database to connect to (from your authentication)": "The MongoDB database to connect to (from your authentication)",
"MongoDB query to filter documents (e.g., {\"status\": \"active\"})": "MongoDB query to filter documents (e.g., {\"status\": \"active\"})",
"Fields to include or exclude (e.g., {\"name\": 1, \"_id\": 0})": "Fields to include or exclude (e.g., {\"name\": 1, \"_id\": 0})",
"Sort criteria (e.g., {\"createdAt\": -1})": "Sort criteria (e.g., {\"createdAt\": -1})",
"Maximum number of documents to return": "Maximum number of documents to return",
"Number of documents to skip": "Number of documents to skip",
"Document(s) to insert. Can be a single document object or an array of documents.": "Document(s) to insert. Can be a single document object or an array of documents.",
"MongoDB query to select documents to update (e.g., {\"status\": \"pending\"})": "MongoDB query to select documents to update (e.g., {\"status\": \"pending\"})",
"MongoDB update operations (e.g., {\"$set\": {\"status\": \"completed\"}})": "MongoDB update operations (e.g., {\"$set\": {\"status\": \"completed\"}})",
"Insert a document if no documents match the filter": "Insert a document if no documents match the filter",
"MongoDB query to select documents to delete (e.g., {\"status\": \"archived\"})": "MongoDB query to select documents to delete (e.g., {\"status\": \"archived\"})",
"Return the documents after updates are applied": "Return the documents after updates are applied",
"MongoDB query to select documents to replace (e.g., {\"_id\": \"123\"})": "MongoDB query to select documents to replace (e.g., {\"_id\": \"123\"})",
"New document that will replace the matched documents": "New document that will replace the matched documents",
"Insert the document if no documents match the filter": "Insert the document if no documents match the filter",
"Which version of the document to return": "Which version of the document to return",
"Array of aggregation stages (e.g., [{\"$match\": {\"status\": \"active\"}}, {\"$group\": {\"_id\": \"$category\", \"count\": {\"$sum\": 1}}}])": "Array of aggregation stages (e.g., [{\"$match\": {\"status\": \"active\"}}, {\"$group\": {\"_id\": \"$category\", \"count\": {\"$sum\": 1}}}])",
"Before Update": "Before Update",
"After Update": "After Update"
}

View File

@@ -0,0 +1,62 @@
{
"MongoDB": "MongoDB",
"Host": "Host",
"Use MongoDB Atlas URL Format": "Use MongoDB Atlas URL Format",
"Database": "Database",
"Username": "Username",
"Password": "Password",
"Auth Source": "Auth Source",
"The hostname or address of the MongoDB server (e.g., localhost:27017 or cluster.example.mongodb.net)": "The hostname or address of the MongoDB server (e.g., localhost:27017 or cluster.example.mongodb.net)",
"Enable this if connecting to MongoDB Atlas (uses mongodb+srv:// protocol)": "Enable this if connecting to MongoDB Atlas (uses mongodb+srv:// protocol)",
"The MongoDB database to connect to (can be specified per action if left empty)": "The MongoDB database to connect to (can be specified per action if left empty)",
"The username to use for connecting to the MongoDB server": "The username to use for connecting to the MongoDB server",
"The password to use to identify at the MongoDB server": "The password to use to identify at the MongoDB server",
"The database to authenticate against (default: admin)": "The database to authenticate against (default: admin)",
"Find Documents": "Find Documents",
"Insert Documents": "Insert Documents",
"Update Documents": "Update Documents",
"Delete Documents": "Delete Documents",
"Find and Update Documents": "Find and Update Documents",
"Find and Replace Documents": "Find and Replace Documents",
"Aggregate Documents": "Aggregate Documents",
"Find documents in a collection": "Find documents in a collection",
"Insert one or more documents into a collection": "Insert one or more documents into a collection",
"Update multiple documents in a collection": "Update multiple documents in a collection",
"Delete documents from a collection": "Delete documents from a collection",
"Find documents and update them, returning the updated documents": "Find documents and update them, returning the updated documents",
"Replace documents that match a filter with a new document": "Replace documents that match a filter with a new document",
"Perform aggregation operations on documents in a collection": "Perform aggregation operations on documents in a collection",
"Collection": "Collection",
"Query": "Query",
"Projection": "Projection",
"Sort": "Sort",
"Limit": "Limit",
"Skip": "Skip",
"Documents": "Documents",
"Filter": "Filter",
"Update": "Update",
"Upsert": "Upsert",
"Return Updated Documents": "Return Updated Documents",
"Replacement Document": "Replacement Document",
"Return Document": "Return Document",
"Aggregation Pipeline": "Aggregation Pipeline",
"The MongoDB database to connect to (from your authentication)": "The MongoDB database to connect to (from your authentication)",
"MongoDB query to filter documents (e.g., {\"status\": \"active\"})": "MongoDB query to filter documents (e.g., {\"status\": \"active\"})",
"Fields to include or exclude (e.g., {\"name\": 1, \"_id\": 0})": "Fields to include or exclude (e.g., {\"name\": 1, \"_id\": 0})",
"Sort criteria (e.g., {\"createdAt\": -1})": "Sort criteria (e.g., {\"createdAt\": -1})",
"Maximum number of documents to return": "Maximum number of documents to return",
"Number of documents to skip": "Number of documents to skip",
"Document(s) to insert. Can be a single document object or an array of documents.": "Document(s) to insert. Can be a single document object or an array of documents.",
"MongoDB query to select documents to update (e.g., {\"status\": \"pending\"})": "MongoDB query to select documents to update (e.g., {\"status\": \"pending\"})",
"MongoDB update operations (e.g., {\"$set\": {\"status\": \"completed\"}})": "MongoDB update operations (e.g., {\"$set\": {\"status\": \"completed\"}})",
"Insert a document if no documents match the filter": "Insert a document if no documents match the filter",
"MongoDB query to select documents to delete (e.g., {\"status\": \"archived\"})": "MongoDB query to select documents to delete (e.g., {\"status\": \"archived\"})",
"Return the documents after updates are applied": "Return the documents after updates are applied",
"MongoDB query to select documents to replace (e.g., {\"_id\": \"123\"})": "MongoDB query to select documents to replace (e.g., {\"_id\": \"123\"})",
"New document that will replace the matched documents": "New document that will replace the matched documents",
"Insert the document if no documents match the filter": "Insert the document if no documents match the filter",
"Which version of the document to return": "Which version of the document to return",
"Array of aggregation stages (e.g., [{\"$match\": {\"status\": \"active\"}}, {\"$group\": {\"_id\": \"$category\", \"count\": {\"$sum\": 1}}}])": "Array of aggregation stages (e.g., [{\"$match\": {\"status\": \"active\"}}, {\"$group\": {\"_id\": \"$category\", \"count\": {\"$sum\": 1}}}])",
"Before Update": "Before Update",
"After Update": "After Update"
}

View File

@@ -0,0 +1,61 @@
{
"Host": "主机",
"Use MongoDB Atlas URL Format": "Use MongoDB Atlas URL Format",
"Database": "Database",
"Username": "用户名",
"Password": "Password",
"Auth Source": "Auth Source",
"The hostname or address of the MongoDB server (e.g., localhost:27017 or cluster.example.mongodb.net)": "The hostname or address of the MongoDB server (e.g., localhost:27017 or cluster.example.mongodb.net)",
"Enable this if connecting to MongoDB Atlas (uses mongodb+srv:// protocol)": "Enable this if connecting to MongoDB Atlas (uses mongodb+srv:// protocol)",
"The MongoDB database to connect to (can be specified per action if left empty)": "The MongoDB database to connect to (can be specified per action if left empty)",
"The username to use for connecting to the MongoDB server": "The username to use for connecting to the MongoDB server",
"The password to use to identify at the MongoDB server": "The password to use to identify at the MongoDB server",
"The database to authenticate against (default: admin)": "The database to authenticate against (default: admin)",
"Find Documents": "Find Documents",
"Insert Documents": "Insert Documents",
"Update Documents": "Update Documents",
"Delete Documents": "Delete Documents",
"Find and Update Documents": "Find and Update Documents",
"Find and Replace Documents": "Find and Replace Documents",
"Aggregate Documents": "Aggregate Documents",
"Find documents in a collection": "Find documents in a collection",
"Insert one or more documents into a collection": "Insert one or more documents into a collection",
"Update multiple documents in a collection": "Update multiple documents in a collection",
"Delete documents from a collection": "Delete documents from a collection",
"Find documents and update them, returning the updated documents": "Find documents and update them, returning the updated documents",
"Replace documents that match a filter with a new document": "Replace documents that match a filter with a new document",
"Perform aggregation operations on documents in a collection": "Perform aggregation operations on documents in a collection",
"Collection": "Collection",
"Query": "Query",
"Projection": "Projection",
"Sort": "Sort",
"Limit": "Limit",
"Skip": "Skip",
"Documents": "Documents",
"Filter": "Filter",
"Update": "更新",
"Upsert": "Upsert",
"Return Updated Documents": "Return Updated Documents",
"Replacement Document": "Replacement Document",
"Return Document": "Return Document",
"Aggregation Pipeline": "Aggregation Pipeline",
"The MongoDB database to connect to (from your authentication)": "The MongoDB database to connect to (from your authentication)",
"MongoDB query to filter documents (e.g., {\"status\": \"active\"})": "MongoDB query to filter documents (e.g., {\"status\": \"active\"})",
"Fields to include or exclude (e.g., {\"name\": 1, \"_id\": 0})": "Fields to include or exclude (e.g., {\"name\": 1, \"_id\": 0})",
"Sort criteria (e.g., {\"createdAt\": -1})": "Sort criteria (e.g., {\"createdAt\": -1})",
"Maximum number of documents to return": "Maximum number of documents to return",
"Number of documents to skip": "Number of documents to skip",
"Document(s) to insert. Can be a single document object or an array of documents.": "Document(s) to insert. Can be a single document object or an array of documents.",
"MongoDB query to select documents to update (e.g., {\"status\": \"pending\"})": "MongoDB query to select documents to update (e.g., {\"status\": \"pending\"})",
"MongoDB update operations (e.g., {\"$set\": {\"status\": \"completed\"}})": "MongoDB update operations (e.g., {\"$set\": {\"status\": \"completed\"}})",
"Insert a document if no documents match the filter": "Insert a document if no documents match the filter",
"MongoDB query to select documents to delete (e.g., {\"status\": \"archived\"})": "MongoDB query to select documents to delete (e.g., {\"status\": \"archived\"})",
"Return the documents after updates are applied": "Return the documents after updates are applied",
"MongoDB query to select documents to replace (e.g., {\"_id\": \"123\"})": "MongoDB query to select documents to replace (e.g., {\"_id\": \"123\"})",
"New document that will replace the matched documents": "New document that will replace the matched documents",
"Insert the document if no documents match the filter": "Insert the document if no documents match the filter",
"Which version of the document to return": "Which version of the document to return",
"Array of aggregation stages (e.g., [{\"$match\": {\"status\": \"active\"}}, {\"$group\": {\"_id\": \"$category\", \"count\": {\"$sum\": 1}}}])": "Array of aggregation stages (e.g., [{\"$match\": {\"status\": \"active\"}}, {\"$group\": {\"_id\": \"$category\", \"count\": {\"$sum\": 1}}}])",
"Before Update": "Before Update",
"After Update": "After Update"
}

View File

@@ -0,0 +1,99 @@
import {
PiecePropValueSchema,
createPiece,
PieceAuth,
Property,
} from '@activepieces/pieces-framework';
import { AppConnectionType, PieceCategory } from '@activepieces/shared';
import { propsValidation } from '@activepieces/pieces-common';
import { z } from 'zod';
import actions from './lib/actions';
import { mongodbConnect } from './lib/common';
export const mongodbAuth = PieceAuth.CustomAuth({
validate: async ({ auth }) => {
try {
await validateAuth(auth);
return {
valid: true,
};
} catch (e) {
return {
valid: false,
error: (e as Error)?.message,
};
}
},
props: {
host: Property.ShortText({
displayName: 'Host',
required: true,
description:
'The hostname or address of the MongoDB server (e.g., localhost:27017 or cluster.example.mongodb.net)',
}),
useAtlasUrl: Property.Checkbox({
displayName: 'Use MongoDB Atlas URL Format',
description:
'Enable this if connecting to MongoDB Atlas (uses mongodb+srv:// protocol)',
required: true,
defaultValue: false,
}),
database: Property.ShortText({
displayName: 'Database',
required: false,
description:
'The MongoDB database to connect to (can be specified per action if left empty)',
}),
username: Property.ShortText({
displayName: 'Username',
required: true,
description: 'The username to use for connecting to the MongoDB server',
}),
password: PieceAuth.SecretText({
displayName: 'Password',
description: 'The password to use to identify at the MongoDB server',
required: true,
}),
authSource: Property.ShortText({
displayName: 'Auth Source',
required: false,
description: 'The database to authenticate against (default: admin)',
defaultValue: 'admin',
}),
},
required: true,
});
const validateAuth = async (auth: PiecePropValueSchema<typeof mongodbAuth>) => {
await propsValidation.validateZod(auth, {
host: z.string().min(1),
useAtlasUrl: z.boolean(),
database: z.string().optional(),
username: z.string().min(1),
password: z.string().optional(),
authSource: z.string().optional(),
});
const client = await mongodbConnect({
props: auth,
type: AppConnectionType.CUSTOM_AUTH,
});
await client.db('admin').command({ ping: 1 });
await client.close();
console.log('MongoDB validation successful');
};
export const mongodb = createPiece({
displayName: 'MongoDB',
auth: mongodbAuth,
minimumSupportedRelease: '0.36.1',
categories: [PieceCategory.DEVELOPER_TOOLS],
logoUrl: 'https://cdn.activepieces.com/pieces/mongodb.png',
authors: ['denieler'],
actions,
triggers: [],
});

View File

@@ -0,0 +1,17 @@
import findDocuments from './actions/find-documents';
import insertDocuments from './actions/insert-documents';
import updateDocuments from './actions/update-documents';
import deleteDocuments from './actions/delete-documents';
import findAndUpdateDocuments from './actions/find-and-update-documents';
import findAndReplaceDocuments from './actions/find-and-replace-documents';
import aggregateDocuments from './actions/aggregate-documents';
export default [
findDocuments,
insertDocuments,
updateDocuments,
deleteDocuments,
findAndUpdateDocuments,
findAndReplaceDocuments,
aggregateDocuments,
];

View File

@@ -0,0 +1,57 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { mongodbAuth } from '../..';
import { mongodbCommon, mongodbConnect } from '../common';
export default createAction({
auth: mongodbAuth,
name: 'aggregate_documents',
displayName: 'Aggregate Documents',
description: 'Perform aggregation operations on documents in a collection',
props: {
database: mongodbCommon.database,
collection: mongodbCommon.collection(),
pipeline: Property.Json({
displayName: 'Aggregation Pipeline',
description: 'Array of aggregation stages (e.g., [{"$match": {"status": "active"}}, {"$group": {"_id": "$category", "count": {"$sum": 1}}}])',
required: true,
}),
},
async run(context) {
const client = await mongodbConnect(context.auth);
try {
if (!context.propsValue.collection) {
throw new Error('Collection is required');
}
if (!context.propsValue.pipeline) {
throw new Error('Aggregation pipeline is required');
}
// Use the database from auth
// Use the database from props or auth
const databaseName = context.propsValue.database || context.auth.props.database;
if (!databaseName) {
throw new Error('Database is required. Please specify it in the connection settings or in this action.');
}
const db = client.db(databaseName);
const collection = db.collection(context.propsValue.collection);
const pipeline = context.propsValue.pipeline;
if (!Array.isArray(pipeline)) {
throw new Error('Aggregation pipeline must be an array of stages');
}
const result = await collection.aggregate(pipeline).toArray();
return {
result,
count: result.length
};
} finally {
await client.close();
}
},
});

View File

@@ -0,0 +1,45 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { mongodbAuth } from '../..';
import { mongodbCommon, mongodbConnect } from '../common';
export default createAction({
auth: mongodbAuth,
name: 'delete_documents',
displayName: 'Delete Documents',
description: 'Delete documents from a collection',
props: {
database: mongodbCommon.database,
collection: mongodbCommon.collection(),
filter: Property.Json({
displayName: 'Filter',
description: 'MongoDB query to select documents to delete (e.g., {"status": "archived"})',
required: true,
}),
},
async run(context) {
const client = await mongodbConnect(context.auth);
try {
if (!context.propsValue.collection) {
throw new Error('Collection is required');
}
const databaseName = context.propsValue.database || context.auth.props.database;
if (!databaseName) {
throw new Error('Database is required. Please specify it in the connection settings or in this action.');
}
const db = client.db(databaseName);
const collection = db.collection(context.propsValue.collection);
const filter = context.propsValue.filter || {};
const result = await collection.deleteMany(filter);
return {
deletedCount: result.deletedCount,
};
} finally {
await client.close();
}
},
});

View File

@@ -0,0 +1,103 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { mongodbAuth } from '../..';
import { mongodbCommon, mongodbConnect } from '../common';
export default createAction({
auth: mongodbAuth,
name: 'find_and_replace_documents',
displayName: 'Find and Replace Documents',
description: 'Replace documents that match a filter with a new document',
props: {
database: mongodbCommon.database,
collection: mongodbCommon.collection(),
filter: Property.Json({
displayName: 'Filter',
description: 'MongoDB query to select documents to replace (e.g., {"_id": "123"})',
required: true,
}),
replacement: Property.Json({
displayName: 'Replacement Document',
description: 'New document that will replace the matched documents',
required: true,
}),
upsert: Property.Checkbox({
displayName: 'Upsert',
description: 'Insert the document if no documents match the filter',
required: false,
defaultValue: false,
}),
returnDocument: Property.StaticDropdown({
displayName: 'Return Document',
description: 'Which version of the document to return',
required: false,
defaultValue: 'after',
options: {
options: [
{ label: 'Before Update', value: 'before' },
{ label: 'After Update', value: 'after' },
],
},
}),
},
async run(context) {
const client = await mongodbConnect(context.auth);
try {
if (!context.propsValue.collection) {
throw new Error('Collection is required');
}
if (!context.propsValue.filter) {
throw new Error('Filter is required');
}
if (!context.propsValue.replacement) {
throw new Error('Replacement document is required');
}
const databaseName = context.propsValue.database || context.auth.props.database;
if (!databaseName) {
throw new Error('Database is required. Please specify it in the connection settings or in this action.');
}
const db = client.db(databaseName);
const collection = db.collection(context.propsValue.collection);
const filter = context.propsValue.filter;
const replacement = context.propsValue.replacement;
const upsert = context.propsValue.upsert || false;
const returnDocumentPreference = context.propsValue.returnDocument || 'after';
let beforeDocument = null;
if (returnDocumentPreference === 'before') {
beforeDocument = await collection.findOne(filter);
}
const replaceResult = await collection.replaceOne(
filter,
replacement,
{
upsert
}
);
let afterDocument = null;
if (returnDocumentPreference === 'after' || (!beforeDocument && replaceResult.matchedCount > 0)) {
const query = replaceResult.upsertedId
? { _id: replaceResult.upsertedId }
: filter;
afterDocument = await collection.findOne(query);
}
const document = returnDocumentPreference === 'before' ? beforeDocument : afterDocument;
return {
matchedCount: replaceResult.matchedCount,
modifiedCount: replaceResult.modifiedCount,
upsertedId: replaceResult.upsertedId,
document,
};
} finally {
await client.close();
}
},
});

View File

@@ -0,0 +1,82 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { mongodbAuth } from '../..';
import { mongodbCommon, mongodbConnect } from '../common';
export default createAction({
auth: mongodbAuth,
name: 'find_and_update_documents',
displayName: 'Find and Update Documents',
description: 'Find documents and update them, returning the updated documents',
props: {
database: mongodbCommon.database,
collection: mongodbCommon.collection(),
filter: Property.Json({
displayName: 'Filter',
description: 'MongoDB query to select documents to update (e.g., {"status": "pending"})',
required: true,
}),
update: Property.Json({
displayName: 'Update',
description: 'MongoDB update operations (e.g., {"$set": {"status": "completed"}})',
required: true,
}),
upsert: Property.Checkbox({
displayName: 'Upsert',
description: 'Insert a document if no documents match the filter',
required: false,
defaultValue: false,
}),
returnUpdated: Property.Checkbox({
displayName: 'Return Updated Documents',
description: 'Return the documents after updates are applied',
required: false,
defaultValue: true,
}),
},
async run(context) {
const client = await mongodbConnect(context.auth);
try {
if (!context.propsValue.collection) {
throw new Error('Collection is required');
}
if (!context.propsValue.filter) {
throw new Error('Filter is required');
}
if (!context.propsValue.update) {
throw new Error('Update is required');
}
const databaseName = context.propsValue.database || context.auth.props.database;
if (!databaseName) {
throw new Error('Database is required. Please specify it in the connection settings or in this action.');
}
const db = client.db(databaseName);
const collection = db.collection(context.propsValue.collection);
const filter = context.propsValue.filter;
const update = context.propsValue.update;
const upsert = context.propsValue.upsert || false;
const returnUpdated = context.propsValue.returnUpdated !== false;
const updateResult = await collection.updateMany(filter, update, { upsert });
let documents: Record<string, unknown>[] = [];
if (returnUpdated) {
documents = await collection.find(filter).toArray();
}
return {
matchedCount: updateResult.matchedCount,
modifiedCount: updateResult.modifiedCount,
upsertedCount: updateResult.upsertedCount,
upsertedId: updateResult.upsertedId,
documents: returnUpdated ? documents : undefined,
};
} finally {
await client.close();
}
},
});

View File

@@ -0,0 +1,91 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { mongodbAuth } from '../..';
import { mongodbCommon, mongodbConnect } from '../common';
export default createAction({
auth: mongodbAuth,
name: 'find_documents',
displayName: 'Find Documents',
description: 'Find documents in a collection',
props: {
database: mongodbCommon.database,
collection: mongodbCommon.collection(),
query: Property.Json({
displayName: 'Query',
description: 'MongoDB query to filter documents (e.g., {"status": "active"})',
required: false,
defaultValue: {},
}),
projection: Property.Json({
displayName: 'Projection',
description: 'Fields to include or exclude (e.g., {"name": 1, "_id": 0})',
required: false,
defaultValue: {},
}),
sort: Property.Json({
displayName: 'Sort',
description: 'Sort criteria (e.g., {"createdAt": -1})',
required: false,
defaultValue: {},
}),
limit: Property.Number({
displayName: 'Limit',
description: 'Maximum number of documents to return',
required: false,
}),
skip: Property.Number({
displayName: 'Skip',
description: 'Number of documents to skip',
required: false,
defaultValue: 0,
}),
},
async run(context) {
const client = await mongodbConnect(context.auth);
try {
if (!context.propsValue.collection) {
throw new Error('Collection is required');
}
const databaseName = context.propsValue.database || context.auth.props.database;
if (!databaseName) {
throw new Error('Database is required. Please specify it in the connection settings or in this action.');
}
const db = client.db(databaseName);
const collection = db.collection(context.propsValue.collection);
const query = context.propsValue.query || {};
const projection = context.propsValue.projection || {};
const sort = context.propsValue.sort || {};
const limit = context.propsValue.limit || 0;
const skip = context.propsValue.skip || 0;
let cursor = collection.find(query, { projection });
if (Object.keys(sort).length > 0) {
// MongoDB sort needs to be handled with care due to typing constraints
// We'll use a type assertion but in a safer way than 'any'
// The MongoDB driver expects a document with field names and sort direction (1 or -1)
cursor = cursor.sort(sort as Record<string, 1 | -1>);
}
if (skip > 0) {
cursor = cursor.skip(skip);
}
if (limit > 0) {
cursor = cursor.limit(limit);
}
const documents = await cursor.toArray();
return {
documents,
count: documents.length
};
} finally {
await client.close();
}
},
});

View File

@@ -0,0 +1,63 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { mongodbAuth } from '../..';
import { mongodbCommon, mongodbConnect } from '../common';
export default createAction({
auth: mongodbAuth,
name: 'insert_documents',
displayName: 'Insert Documents',
description: 'Insert one or more documents into a collection',
props: {
database: mongodbCommon.database,
collection: mongodbCommon.collection(),
documents: Property.Json({
displayName: 'Documents',
description: 'Document(s) to insert. Can be a single document object or an array of documents.',
required: true,
}),
},
async run(context) {
const client = await mongodbConnect(context.auth);
try {
if (!context.propsValue.collection) {
throw new Error('Collection is required');
}
if (!context.propsValue.documents) {
throw new Error('Documents are required');
}
const databaseName = context.propsValue.database || context.auth.props.database;
if (!databaseName) {
throw new Error('Database is required. Please specify it in the connection settings or in this action.');
}
const db = client.db(databaseName);
const collection = db.collection(context.propsValue.collection);
const documents = context.propsValue.documents;
let result;
if (Array.isArray(documents)) {
// Insert many documents
if (documents.length === 0) {
return { insertedCount: 0, insertedIds: [] };
}
result = await collection.insertMany(documents);
return {
insertedCount: result.insertedCount,
insertedIds: result.insertedIds,
};
} else {
// Insert a single document
result = await collection.insertOne(documents);
return {
insertedId: result.insertedId,
acknowledged: result.acknowledged,
};
}
} finally {
await client.close();
}
},
});

View File

@@ -0,0 +1,69 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { mongodbAuth } from '../..';
import { mongodbCommon, mongodbConnect } from '../common';
export default createAction({
auth: mongodbAuth,
name: 'update_documents',
displayName: 'Update Documents',
description: 'Update multiple documents in a collection',
props: {
database: mongodbCommon.database,
collection: mongodbCommon.collection(),
filter: Property.Json({
displayName: 'Filter',
description: 'MongoDB query to select documents to update (e.g., {"status": "pending"})',
required: true,
}),
update: Property.Json({
displayName: 'Update',
description: 'MongoDB update operations (e.g., {"$set": {"status": "completed"}})',
required: true,
}),
upsert: Property.Checkbox({
displayName: 'Upsert',
description: 'Insert a document if no documents match the filter',
required: false,
defaultValue: false,
}),
},
async run(context) {
const client = await mongodbConnect(context.auth);
try {
if (!context.propsValue.collection) {
throw new Error('Collection is required');
}
if (!context.propsValue.filter) {
throw new Error('Filter is required');
}
if (!context.propsValue.update) {
throw new Error('Update is required');
}
const databaseName = context.propsValue.database || context.auth.props.database;
if (!databaseName) {
throw new Error('Database is required. Please specify it in the connection settings or in this action.');
}
const db = client.db(databaseName);
const collection = db.collection(context.propsValue.collection);
const filter = context.propsValue.filter;
const update = context.propsValue.update;
const upsert = context.propsValue.upsert || false;
const result = await collection.updateMany(filter, update, { upsert });
return {
matchedCount: result.matchedCount,
modifiedCount: result.modifiedCount,
upsertedCount: result.upsertedCount,
upsertedId: result.upsertedId,
};
} finally {
await client.close();
}
},
});

View File

@@ -0,0 +1,129 @@
import { AppConnectionValueForAuthProperty, PiecePropValueSchema, Property } from '@activepieces/pieces-framework';
import { MongoClient, Db, ServerApiVersion } from 'mongodb';
import { mongodbAuth } from '../..';
export async function mongodbConnect(
authWithProps: AppConnectionValueForAuthProperty<typeof mongodbAuth>
): Promise<MongoClient> {
try {
const auth = authWithProps.props;
if (!auth.host || !auth.username || !auth.password) {
throw new Error('Host, username, and password are required');
}
// Build connection string based on whether it's Atlas or standard MongoDB
const authSource = auth.authSource || 'admin';
const protocol = auth.useAtlasUrl ? 'mongodb+srv://' : 'mongodb://';
let connectionString = `${protocol}${auth.username}:${encodeURIComponent(
auth.password
)}@${auth.host}`;
if (auth.database) {
connectionString += `/${auth.database}`;
}
connectionString += `?authSource=${authSource}`;
// Add common MongoDB Atlas parameters if using Atlas URL format
const finalConnectionString = auth.useAtlasUrl
? `${connectionString}&retryWrites=true&w=majority`
: connectionString;
const client = new MongoClient(finalConnectionString, {
connectTimeoutMS: 10000, // 10 seconds timeout for connection
serverSelectionTimeoutMS: 10000, // 10 seconds timeout for server selection
serverApi: {
version: ServerApiVersion.v1,
strict: true,
deprecationErrors: true,
},
});
await client.connect();
// For validation purposes, just ping the server
await client.db('admin').command({ ping: 1 });
console.log('MongoDB connection successful');
return client;
} catch (error) {
const errorMessage =
error instanceof Error ? error.message : 'Unknown error';
throw new Error(`Failed to connect to MongoDB: ${errorMessage}`);
}
}
export async function getDatabase(
client: MongoClient,
databaseName?: string
): Promise<Db> {
return client.db(databaseName);
}
export async function getCollections(
client: MongoClient,
databaseName: string
): Promise<string[]> {
try {
const db = client.db(databaseName);
const collections = await db.listCollections().toArray();
return collections.map((collection) => collection.name);
} catch (error) {
console.error('Error getting collections:', error);
return [];
}
}
export const mongodbCommon = {
database: Property.ShortText({
displayName: 'Database',
description:
'The MongoDB database to connect to (from your authentication)',
required: false,
}),
collection: (required = true) =>
Property.Dropdown({
auth: mongodbAuth,
displayName: 'Collection',
required,
refreshers: ['database'],
options: async ({ auth, database }) => {
if (!auth) {
return {
disabled: true,
placeholder: 'Connect to MongoDB first',
options: [],
};
}
const typedAuth = auth
const databaseName = database as string || typedAuth.props.database;
if (!databaseName) {
return {
disabled: true,
placeholder: 'Database is required in authentication or action',
options: [],
};
}
const client = await mongodbConnect(typedAuth);
try {
const collections = await getCollections(client, databaseName);
return {
disabled: false,
options: collections.map((collection: string) => {
return {
label: collection,
value: collection,
};
}),
};
} finally {
await client.close();
}
},
}),
};

View File

@@ -0,0 +1,19 @@
{
"extends": "../../../../tsconfig.base.json",
"compilerOptions": {
"module": "commonjs",
"forceConsistentCasingInFileNames": true,
"strict": true,
"noImplicitOverride": true,
"noImplicitReturns": true,
"noFallthroughCasesInSwitch": true,
"noPropertyAccessFromIndexSignature": true
},
"files": [],
"include": [],
"references": [
{
"path": "./tsconfig.lib.json"
}
]
}

View File

@@ -0,0 +1,11 @@
{
"extends": "./tsconfig.json",
"compilerOptions": {
"module": "commonjs",
"outDir": "../../../../dist/out-tsc",
"declaration": true,
"types": ["node"]
},
"exclude": ["jest.config.ts", "src/**/*.spec.ts", "src/**/*.test.ts"],
"include": ["src/**/*.ts"]
}