builderx_api-mongodb
Patterns for using MongoDB driver and dynamic collections in BuilderX API
Skill by Vũ Lưu
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/vuluu2k-builderx-api-mongodb
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: backend
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/builderx-api-mongodb
What's inside
- Skill name
builderx_api-mongodb- Description
- Patterns for using MongoDB driver and dynamic collections in BuilderX API
- License
- MIT
- Metadata
- author: Vũ Lưu · source: Source code builderx_api · version: 2026.03.25
- Instructions
- 91 lines in SKILL.md · view on GitHub
Agent Skills spec issues
- name: only lowercase letters, digits and single hyphens allowed
Files (1)
- SKILL.md
SKILL.md (first lines)
# BuilderX API MongoDB Skill
The `builderx_api` project integrates MongoDB via the `mongodb_driver` alongside its primary Postgres (Citus) database. This is used extensively for the *Dynamic Database Collections* feature in `BuilderxApi.DBCollections.DBCollections` (`lib/builderx_api/db_collections/db_collections.ex`).
In this pattern, metadata about the data models (schema) is stored in Postgres (`DBCollection`), but the actual records are physically stored in MongoDB (`MongoRepo`) using a single `records` table separated by `table_name` and `site_id`.
## 1. Interacting with MongoDB Collections
You should generally not interact with `MongoRepo` directly unless you are inside the `builderx_api/db_collections/...` scope.
Instead, use `DBCollections`:
### Checking if a record exists
```elixir
filters = %{"slug" => "my-record"}
# conn must have assigns for customer, account, or is_check_record_creator as required
DBCollections.exists_record(table_name, filters, db_collection_struct, conn)
# => {:ok, true | false}
```
### Querying records
Retrieves customized results based on dynamic schemas.
```elixir
select = %{"id" => 1, "name" => 1}
filters = %{"status" => "active"}
limit = 10
skip = 0
sort = %{"inserted_at" => -1} # Use 1 for ASC, -1 for DESC
populate = [] # Populate relations if any references are configured
params = %{"site_id" => "site_uuid"}
DBCollections.query_record(
table_name,
select,
filters,
sort,
limit,
skip,
populate,
params,
conn
)
# => List of normalized maps
```
### Inserting records
```elixir
# attrs is a list of map: [%{"field_name" => "name", "field_value" => "Record 1"}]
# Note that we use a custom key format for dynamic mapping.
{:ok, inserted_record} = DBCollections.insert_record(table_name, attrs, params, conn)
```
## 2. Using `MongoRepo` directly
The `BuilderxApi.MongoRepo` is an abstraction over `:mongo` (the `mongodb_driver` pool).
For some administrative actions, it is called directly:
```elixir
alias BuilderxApi.MongoRepo
table = "records"
# Find
records = MongoRepo.find(table, %{"site_id" => site_id, "table_name" => "users"})
# Find one
record = MongoRepo.find_one(table, %{"_id" => id})
# Update Many
MongoRepo.update_many(
table,
%{"site_id" => site_id, "table_name" => "users"},
%{"$unset" => %{"webcmscol_removed_field" => ""}}
)
# Insert Many
MongoRepo.insert_many(table, list_of_maps)
# Delete Many
MongoRepo.delete_many(table, %{"site_id" => site_id, "table_name" => "users"})
```
### Important Patterns
- `webcmscol_`: The system prepends `webcmscol_` to column names stored in MongoDB to prevent clashes with system variables like `_id`, `site_id`, `table_name`. You will see operations map/unmap this prefix (`DBUtils.sanitize_column_name/1`).
- **Caching Counts**: Because counting documents in Mongo can slowly become a bottleneck, the total document count per site collection is cached in Redis: `db_collection_records::{site_id}`.
- All MongoDB records share the `records` collection but are differentiated by standard root fields: `"site_id"` and `"table_name"`.From vuluu2k/skills, MIT.
More from vuluu2k/skills
- 0.437score
pinia
Vũ Lưu
Pinia state management for Vue 3 using Composition API (Setup Stores) — TypeScript-first, storeToRefs for reactivity, focused stores, and API calls in…
SkillDFreshness: D★ 1Claude Code +9 - 0.434score
pinia-options
Vũ Lưu
Pinia state management for Vue using Options API style — define stores with state, getters, actions, and use them in Options API components via…
SkillDFreshness: D★ 1Claude Code +9 - 0.433score
builderx_spa-api
Vũ Lưu
Standardized API fetching for BuilderX SPA using useApiget, useApipost, useApiDelete, and useApiProgress from @/composable/fetch.
SkillDFreshness: D★ 1Claude Code +9 - 0.433score
builderx_spa-design
Vũ Lưu
Standardized design system for BuilderX SPA.
SkillDFreshness: D★ 1Claude Code +9 - 0.433score
builderx_spa-permission
Vũ Lưu
Rule-based permission checking in BuilderX SPA using bitwise operations from @/composable/employeePermission.
SkillDFreshness: D★ 1Claude Code +9 - 0.430score
landing_page-contexts
Vũ Lưu
Guide to Context module patterns in landing_page_backend — Ecto queries, dynamic query building, Ecto.Multi, and Outbox messaging.
SkillDFreshness: D★ 1Claude Code +9 - 0.430score
landing_page-vue2-editor
Vũ Lưu
Vue 2 Options API patterns for the Landing Page editor — Vuex namespaced stores, Ant Design Vue components, mixins, computed getters/setters, and axios API…
SkillDFreshness: D★ 1Claude Code +9 - 0.430score
builderx_api-schemas
Vũ Lưu
Guidelines for creating Ecto Schemas in builderx_api, including composite primary keys, custom json function and Ecto.Changeset.
SkillDFreshness: D★ 1Claude Code +9 - 0.430score
landing_page-controllers
Vũ Lưu
Guide to Phoenix Controller structure in landing_page_backend using FallbackController, tuple responses, and permission plugs.
SkillDFreshness: D★ 1Claude Code +9 - 0.430score
landing_page-schemas
Vũ Lưu
Guidelines for creating Ecto Schemas in landing_page_backend, including binary UUID primary keys, virtual fields, custom json/1 function, and multiple…
SkillDFreshness: D★ 1Claude Code +9 - 0.430score
landing_page-plugs
Vũ Lưu
Custom Plug middleware patterns in landing_page_backend — authentication (JWT/Passport), authorization, permission checking, and rate limiting.
SkillDFreshness: D★ 1Claude Code +9 - 0.427score
builderx_api-controllers
Vũ Lưu
Guide to Phoenix Controller structure in builderx_api using FallbackController and standard tuple responses.
SkillDFreshness: D★ 1Claude Code +9
Signals
- Stars
- 1
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Mar 25, 2026 (7 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- Version
- 2026.03.25
- License
- MIT
- Repository
- github.com/vuluu2k/skills
- Website
- vskill.vercel.app
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from Vũ Lưu
- 0.437score
pinia
Vũ Lưu
Pinia state management for Vue 3 using Composition API (Setup Stores) — TypeScript-first, storeToRefs for reactivity, focused stores, and API calls in…
SkillDFreshness: D★ 1Claude Code +9 - 0.434score
pinia-options
Vũ Lưu
Pinia state management for Vue using Options API style — define stores with state, getters, actions, and use them in Options API components via…
SkillDFreshness: D★ 1Claude Code +9 - 0.433score
builderx_spa-permission
Vũ Lưu
Rule-based permission checking in BuilderX SPA using bitwise operations from @/composable/employeePermission.
SkillDFreshness: D★ 1Claude Code +9 - 0.433score
builderx_spa-api
Vũ Lưu
Standardized API fetching for BuilderX SPA using useApiget, useApipost, useApiDelete, and useApiProgress from @/composable/fetch.
SkillDFreshness: D★ 1Claude Code +9 - 0.433score
builderx_spa-design
Vũ Lưu
Standardized design system for BuilderX SPA.
SkillDFreshness: D★ 1Claude Code +9 - 0.430score
builderx_api-schemas
Vũ Lưu
Guidelines for creating Ecto Schemas in builderx_api, including composite primary keys, custom json function and Ecto.Changeset.
SkillDFreshness: D★ 1Claude Code +9
Cite this page
builderx_api-mongodb skill. Agent Mart. https://agentmart.dev/skills/vuluu2k-builderx-api-mongodb (last updated 2026-10-24)