Dokumentacja dla programistów

Document DB

Planowanie aplikacjiAplikacje monday.com
Aktualizacja 2026-10-01

Document DB w monday code to trwałe rozwiązanie do przechowywania danych, hostowane w całości w infrastrukturze monday.com. Integruje się z aplikacjami, dzięki czemu możesz bezpiecznie przechowywać ich dane bez konfigurowania ani utrzymywania własnej bazy danych.

Wprowadzenie

Document DB w monday code to warstwa bazy danych zgodna z MongoDB, zbudowana w oparciu o infrastrukturę Firebase. Zapewnia bezpieczne i skalowalne przechowywanie danych w środowisku monday.com. Możesz połączyć się z nią bezpośrednio z aplikacji za pomocą dowolnej biblioteki klienckiej zgodnej z MongoDB.

Wiele regionów

W przypadku aplikacji obsługujących wiele regionów w każdym regionie (np. UE, AU, USA) tworzona jest osobna baza danych. W przypadku aplikacji, które nie obsługują wielu regionów, baza danych jest tworzona tylko w regionie, w którym znajduje się konto monday.com.

Dane nie są synchronizowane między regionami, a monday.com nie udostępnia narzędzi do przenoszenia danych między regionami.

Dlatego zalecamy włączenie obsługi wielu regionów przed rozpoczęciem korzystania z Document DB. Dzięki temu dane aplikacji będą przechowywane w tym samym regionie co konto monday.com każdego klienta. Pomoże Ci to spełnić wymagania dotyczące lokalizacji danych oraz szersze wymagania dotyczące ochrony danych klientów na całym świecie.

Limity

Wszystkie aplikacje korzystające z Document DB podlegają następującym dziennym limitom w każdym regionie:

Kategoria Dzienny limit (na region)
Maksymalny rozmiar bazy danych 1 GiB
Odczyty encji 50 000 dziennie
Zapisy encji 20 000 dziennie
Usunięcia encji 20 000 dziennie

Resetowanie limitów

Limity dzienne są resetowane we wszystkich regionach o północy czasu pacyficznego.

Ponowne obliczanie rozmiaru

Rozmiar bazy danych jest obliczany ponownie co godzinę w każdym regionie.

Jeśli przekroczysz limit rozmiaru w danym regionie, możesz usunąć dane. Dostęp zostanie automatycznie przywrócony podczas najbliższego ponownego obliczania rozmiaru.

Aplikacje obsługujące wiele regionów

Limity dzienne są stosowane niezależnie w bazie danych każdego regionu. Jeśli aplikacja przekroczy dowolny limit w danym regionie, cały dostęp do bazy danych tego regionu - z wyjątkiem operacji usuwania - zostanie zablokowany.

W takim przypadku w logach pojawi się następujący błąd:

PERMISSION_DENIED: Missing or insufficient permissions

Ograniczenie dotyczy tylko danego regionu. Pozostałe regiony nadal działają bez zmian.

Uzyskiwanie dostępu do Document DB

Wymagania wstępne

Krok 1: Wdróż aplikację

Zanim uzyskasz dostęp do Document DB, musisz wdrożyć aplikację co najmniej raz. Spowoduje to zainicjowanie bazy danych i udostępni parametry połączenia.

Krok 2: Pobierz parametry połączenia środowiska uruchomieniowego

Po wdrożeniu aplikacja automatycznie otrzyma bezpieczne parametry połączenia za pośrednictwem zmiennej środowiskowej MNDY_MONGODB_CONNECTION_STRING. Są to parametry połączenia z uprawnieniami do odczytu i zapisu, których aplikacja używa do wszystkich operacji na bazie danych.

Możesz je pobrać za pomocą SDK.

Nie musisz konfigurować ich ręcznie. monday code automatycznie dodaje tę wartość do środowiska produkcyjnego.

Krok 3: Wygeneruj tymczasowe parametry połączenia

Po pierwszym wdrożeniu aplikacji możesz też wygenerować tymczasowe, 30-minutowe parametry połączenia z uprawnieniami tylko do odczytu. Umożliwią Ci one przeglądanie danych na komputerze lokalnym.

Uruchom następujące polecenie CLI:

Terminal
mapps database:connection-string

Informacje

Polecenia CLI

Metody SDK

Przykład w Node.js

// Using the official MongoDB Node.js driver
const { MongoClient } = require('mongodb');

// Access the connection string from environment variables
const uri = process.env.MNDY_MONGODB_CONNECTION_STRING;
const client = new MongoClient(uri);

async function connectToDatabase() {
  try {
    // Connect to the MongoDB server
    await client.connect();
    console.log('Connected to MongoDB');

    // Access a database
    const database = client.db();

    // Access a collection
    const collection = database.collection('your_collection_name'); // Collections are created automatically when you first write to them.

    // Basic operations example

    // Insert a document
    const insertResult = await collection.insertOne({
      title: 'Task',
      description: 'Complete documentation',
      status: 'In Progress',
      createdAt: new Date()
    });
    console.log('Inserted document:', insertResult);

    // Find documents
    const findResult = await collection.find({ status: 'In Progress' }).toArray();
    console.log('Found documents:', findResult);

    // Update a document
    const updateResult = await collection.updateOne(
      { _id: insertResult.insertedId },
      { $set: { status: 'Completed' } }
    );
    console.log('Updated document:', updateResult);

    // Delete a document
    const deleteResult = await collection.deleteOne({ _id: insertResult.insertedId });
    console.log('Deleted document:', deleteResult);

  } catch (error) {
    console.error('Error connecting to MongoDB:', error);
  } finally {
    // Close the connection when done
    await client.close();
  }
}

connectToDatabase();

Przykład w Pythonie

# Using pymongo
import os
import pymongo
from pymongo import MongoClient

# Access the connection string from environment variables
uri = os.environ.get('MNDY_MONGODB_CONNECTION_STRING')
client = MongoClient(uri)

try:
    # Access a database
    db = client.get_default_database()

    # Access a collection; collections are created automatically when you first write to them.
    collection = db['your_collection_name'] 

    # Basic operations example

    # Insert a document
    insert_result = collection.insert_one({
        'title': 'Task',
        'description': 'Complete documentation',
        'status': 'In Progress',
        'created_at': pymongo.datetime.datetime.utcnow()
    })
    print(f"Inserted document ID: {insert_result.inserted_id}")

    # Find documents
    find_result = collection.find({'status': 'In Progress'})
    for document in find_result:
        print(f"Found document: {document}")

    # Update a document
    update_result = collection.update_one(
        {'_id': insert_result.inserted_id},
        {'$set': {'status': 'Completed'}}
    )
    print(f"Modified {update_result.modified_count} document(s)")

    # Delete a document
    delete_result = collection.delete_one({'_id': insert_result.inserted_id})
    print(f"Deleted {delete_result.deleted_count} document(s)")

except Exception as e:
    print(f"Error: {e}")
finally:
    # Close the connection when done
    client.close()

Chcesz zwiększyć limity aplikacji? Złóż wniosek o ich podwyższenie tutaj.