Kopiera data från eller till MongoDB genom att använda Azure Data Factory eller Synapse Analytics

GÄLLER FÖR: Azure Data Factory Azure Synapse Analytics

Tips

Data Factory i Microsoft Fabric är nästa generations Azure Data Factory, med en enklare arkitektur, inbyggd AI och nya funktioner. Om dataintegrering är nytt för dig börjar du med Fabric Data Factory. Befintliga ADF-arbetsbelastningar kan uppgraderas till Fabric för att få åtkomst till nya funktioner inom datavetenskap, realtidsanalys och rapportering.

Den här artikeln beskriver hur man använder Copy Activity i Azure Data Factory och Synapse Analytics-pipelines för att kopiera data från och till en MongoDB-databas. Den bygger på översiktsartikeln om kopieringsaktivitet som ger en generell överblick över kopieringsaktiviteten.

Anmärkning

Den här anslutningsappen är också tillgänglig i Data Factory i Microsoft Fabric. Information om Fabric specifika konfigurationer och funktioner finns i dokumentationen om Fabric MongoDB-anslutningsprogram.

Viktigt!

Den nya MongoDB-anslutningsappen ger förbättrat inbyggt MongoDB-stöd. Om du använder den äldre MongoDB-kontakten i din lösning, som stöds as-is endast för bakåtkompatibilitet, se MongoDB-kontakt (legacy). Du kan använda denna connector för att kopiera data från och till en Azure DocumentDB (med MongoDB-kompatibilitet).

Funktioner som stöds

Denna MongoDB-kontakt stöder följande funktioner:

Funktioner som stöds IR
Copy activity (källa/mottagare) (1) (2)

(1) Azure integration runtime (2) Lokalt installerad integrationskörning

En lista över datalager som stöds som källor och mål finns i tabellen Stödda datalager.

Mer specifikt stöder den här MongoDB-anslutningsappen versioner upp till 4.2. Om ditt arbete kräver versioner som är nyare än 4.2 bör du överväga att använda MongoDB Atlas med MongoDB Atlas-anslutningsappen, som ger mer omfattande support och funktioner.

Förutsättningar

Om ditt datalager finns i ett lokalt nätverk, ett Azure virtuellt nätverk eller Amazon Virtual Private Cloud måste du konfigurera en självhostad integrationskörning för att ansluta till den.

Om ditt datalager är en hanterad molndatatjänst kan du använda Azure Integration Runtime. Om åtkomsten är begränsad till IP-adresser som är godkända i brandväggsreglerna kan du lägga till Azure Integration Runtime IP-adresser i listan över tillåtna.

Du kan också använda funktionen hanterad virtuell nätverksintegrering i Azure Data Factory för att få åtkomst till det lokala nätverket utan att installera och konfigurera en integrationskörning med egen värd.

Mer information om de nätverkssäkerhetsmekanismer och alternativ som stöds av Data Factory finns i Strategier för dataåtkomst.

Komma igång

Om du vill utföra kopieringsaktiviteten med en pipeline kan du använda något av följande verktyg eller SDK:er:

Skapa en länkad tjänst till MongoDB genom att använda UI:t

Använd följande steg för att skapa en länkad tjänst till MongoDB i användargränssnittet för Azure portalen.

  1. Bläddra till fliken Administrera i din Azure Data Factory eller Synapse workspace och välj Linked Services. Välj sedan Nytt:

  2. Sök efter MongoDB och välj MongoDB-anslutningsappen.

    Välj MongoDB-anslutningsappen.

  3. Konfigurera tjänstinformationen, testa anslutningen och skapa den nya länkade tjänsten.

    Konfigurera en länkad tjänst till MongoDB.

Konfigurationsinformation för anslutning

Följande avsnitt innehåller information om egenskaper som används för att definiera Data Factory-entiteter som är specifika för MongoDB-anslutningsappen.

Länkade tjänstegenskaper

Följande tabell listar de stödda egenskaperna för en MongoDB-länkad tjänst:

Egenskap Beskrivning Obligatoriskt
typ Sätt typegenskapen till: MongoDbV2 Ja
anslutningssträng Specificera MongoDB-reťazec pripojenia, såsom mongodb://[username:password@]host[:port][/[database][?options]]. För mer information, se MongoDB:s manual om reťazec pripojenia.

Du kan också placera en anslutningssträng i Azure Key Vault. För mer information, se Lagra inloggningsuppgifter i Azure Key Vault.
Ja
database Namnet på den databas som du vill komma åt. Ja
connectVia Den Integration Runtime som ska användas för att ansluta till datalagret. Mer information finns i avsnittet Krav . Om du inte specificerar denna egenskap används standard Azure Integration Runtime Nej

Exempel:

{
    "name": "MongoDBLinkedService",
    "properties": {
        "type": "MongoDbV2",
        "typeProperties": {
            "connectionString": "mongodb://[username:password@]host[:port][/[database][?options]]",
            "database": "myDatabase"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Egenskaper för datamängd

För en fullständig lista över sektioner och egenskaper som du kan använda för att definiera dataset, se Datasets and linked services. Följande tabell listar de stödda egenskaperna för en MongoDB-datamängd:

Egenskap Beskrivning Obligatoriskt
typ Sätt typegenskapen för datasetet till: MongoDbV2Collection Ja
collectionName Namnet på samlingen i MongoDB-databasen. Ja

Exempel:

{
    "name": "MongoDbDataset",
    "properties": {
        "type": "MongoDbV2Collection",
        "typeProperties": {
            "collectionName": "<Collection name>"
        },
        "schema": [],
        "linkedServiceName": {
            "referenceName": "<MongoDB linked service name>",
            "type": "LinkedServiceReference"
        }
    }
}

Egenskaper av kopieringsaktivitet

En fullständig lista över avsnitt och egenskaper som är tillgängliga för att definiera aktiviteter finns i artikeln Pipelines . Det här avsnittet innehåller en lista över egenskaper som stöds av MongoDB-källa och mottagare.

MongoDB som källa

Avsnittet källa i kopieringsaktiviteten stöder följande egenskaper:

Egenskap Beskrivning Obligatoriskt
typ Sätt typegenskapen för kopieringsaktivitetskällan till: MongoDbV2Source Ja
filter Anger markeringsfilter med hjälp av frågeoperatorer. Om du vill returnera alla dokument i en samling utelämnar du den här parametern eller skickar ett tomt dokument ({}). Nej
cursorMethods.project Anger fälten som ska returneras i dokumenten för projektion. Om du vill returnera alla fält i matchande dokument utelämnar du den här parametern. Nej
cursorMethods.sort Anger i vilken ordning frågan returnerar matchande dokument. Hänvisa till cursor.sort(). Nej
cursorMethods.limit Anger det maximala antalet dokument som servern returnerar. Se cursor.limit(). Nej
cursorMethods.skip Anger antalet dokument som ska hoppa över och varifrån MongoDB börjar returnera resultat. Referera till cursor.skip(). Nej
batchSize Anger hur många dokument som ska returneras i varje batch av svaret från MongoDB-instansen. I de flesta fall påverkar inte ändring av batchstorleken varken användaren eller applikationen. Azure Cosmos DB begränsar varje batch för att inte överstiga 40 MB, vilket är summan av batchSize-antalet dokumentstorlekar, så minska detta värde om ditt dokument är stort. Nej
(standardvärdet är 100)

Tips

Tjänsten stöder användning av BSON-dokument i strikt läge. Se till att din filterfråga är i Strict-läge i stället för Shell-läge. För mer information, se MongoDB-manualen.

Exempel:

"activities":[
    {
        "name": "CopyFromMongoDB",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<MongoDB input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "MongoDbV2Source",
                "filter": "{datetimeData: {$gte: ISODate(\"2018-12-11T00:00:00.000Z\"),$lt: ISODate(\"2018-12-12T00:00:00.000Z\")}, _id: ObjectId(\"5acd7c3d0000000000000000\") }",
                "cursorMethods": {
                    "project": "{ _id : 1, name : 1, age: 1, datetimeData: 1 }",
                    "sort": "{ age : 1 }",
                    "skip": 3,
                    "limit": 3
                }
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

MongoDB som mottagare

Avsnittet sink i Copy Activity har stöd för följande egenskaper:

Egenskap Beskrivning Obligatoriskt
typ Sätt typegenskapen för copy activity sink till MongoDbV2Sink. Ja
writeBehavior Beskriver hur du skriver data till MongoDB. Tillåtna värden: infoga och upsert.

upsert-operationens beteende är att ersätta dokumentet om ett dokument med samma redan finns; annars infogas dokumentet.

Obs! Tjänsten genererar automatiskt ett _id för ett dokument om ett _id inte har angetts i det ursprungliga dokumentet eller efter kolumnmappning. Det innebär att du måste se till att ditt dokument har ett ID för att upsert ska fungera som förväntat.
Nej
(standardvärdet är insert)
writeBatchSize Egenskapen writeBatchSize styr antalet dokument som ska skrivas i varje batch. För att förbättra prestandan, försök öka värdet. Om din dokumentstorlek är stor, försök minska värdet. Nej
(standardvärdet är 10 000)
writeBatchTimeout Väntetiden för att batchinfogningsåtgärden ska slutföras innan tidsgränsen uppnås. Det tillåtna värdet är tidsintervall. Nej
(standardvärdet är 00:30:00 –30 minuter)

Tips

För att importera JSON-dokument as-is, se avsnittet Importera eller exportera JSON-dokument . För att kopiera från tabellformade data, se Schema mapping.

Exempel

"activities":[
    {
        "name": "CopyToMongoDB",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<Document DB output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "<source type>"
            },
            "sink": {
                "type": "MongoDbV2Sink",
                "writeBehavior": "upsert"
            }
        }
    }
]

Importera och exportera JSON-dokument

Använd den här MongoDB-anslutningen för att enkelt:

  • Kopiera dokument mellan två MongoDB-samlingar som de är.
  • Importera JSON-dokument från olika källor till MongoDB, bland annat från Azure Cosmos DB, Azure Blob Storage, Azure Data Lake Store och andra filbaserade arkiv som stöds.
  • Exportera JSON-dokument från en MongoDB-samling till olika filbaserade arkiv.

Om du vill uppnå en sådan schemaagnostisk kopia hoppar du över avsnittet "struktur" (kallas även schema) i datauppsättningen och schemamappningen i kopieringsaktiviteten.

Datatypsmappning för MongoDB

När du kopierar data från MongoDB använder tjänsten följande mappningar från MongoDB-datatyper till interimistiska datatyper. För mer information om hur kopieringsaktivitet mappar källschemat och datatypen till sinken, se Schema och datatypmappningar.

MongoDB-datatyp Datatyp för interimstjänst
Date Int64
Objekt-ID String
Decimal 128 String
Tidsstämpel De viktigaste 32 bitarna –> Int64
De minst signifikanta 32 bitarna –> Int64
String String
Double String
Int32 Int64
Int64 Int64
Boolean Boolean
Null Null
JavaScript String
Reguljärt uttryck String
Min nyckel Int64
Maxnyckel Int64
Binary String

MongoDB-anslutningslivscykel och uppgradering

I följande tabell visas versionssteget och ändringsloggarna för olika versioner av MongoDB-anslutningsappen:

Utgåva Utgivningsfas Ändringslogg
MongoDB (äldre) Removed Ej tillämpbart.
MongoDB GA-version tillgänglig • Stöd för motsvarande MongoDB-frågor.

• Double läses som strängdatatypen.

Uppgradera den länkade MongoDB-tjänsten

Skapa en ny Länkad MongoDB-tjänst och konfigurera den genom att referera till länkade tjänstegenskaper.

För en lista över databutiker som stöds som källor och mottagare av kopieringsaktiviteten, se stödda databutiker.