Dela via


Ändra Stream på vCore-baserade Azure Cosmos DB för MongoDB (förhandsversion)

Ändringsströmmar är en realtidsström med databasändringar som flödar från databasen till ditt program. Med den här funktionen kan du skapa reaktiva program genom att prenumerera på databasändringar, vilket eliminerar behovet av kontinuerlig avsökning för att identifiera ändringar.

Aktivera ändringsströmmar

Du kan aktivera eller inaktivera den här funktionen med hjälp av Azure CLI eller en ARM-mall. Portalstöd kommer snart att läggas till.

Steg för att aktivera ändringsströmmar i vCore-kluster via CLI

  1. Logga in på Azure CLI
az login
  1. Hämta de aktuella inställningarna för funktionsflaggor i klustret. Detta säkerställer att du behåller alla befintliga flaggor när du lägger till den nya funktionen.
az resource show --ids "/subscriptions/<sub id>/resourceGroups/<resource group name>/providers/Microsoft.DocumentDB/mongoClusters/<resource name of your Cosmos DB for MongoDB vCore cluster>" --api-version 2024-10-01-preview
  1. Skicka PATCH-begäran för att aktivera funktionen.
az resource patch --ids "/subscriptions/<subscription_id>/resourceGroups/<resource_group_name>/providers/Microsoft.DocumentDB/mongoClusters/<vCore_cluster_name>" --api-version 2024-10-01-preview --properties "{\"previewFeatures\": [ \"ChangeStreams\"]}"
  1. Kontrollera resultatet:
    • Se till att svarsnyttolasten innehåller "previewFeatures": ["ChangeStreams"].
    • Om du får felet "ändringsströmmar stöds inte i det här klustret" skapar du en supportbegäran.

Konfigurera ändringsströmmar

Den här exempelkoden initierar en ändringsström i exampleCollection samlingen och övervakar kontinuerligt eventuella ändringar. När en ändring identifieras hämtar den ändringshändelsen och skriver ut den i JSON-format.

// Open a change stream
const changeStream = db.exampleCollection.watch();

// Listen for changes
while (changeStream.hasNext()) 
    {
        const change = changeStream.next();
        printjson(change);
    }

Viktigt!

Ändringsströmmar kan återupptas genom att ange en återuppta-token till resumeAfter när markören öppnas. Det förväntas dock att det finns tillräckligt med historik för att hitta åtgärden som är associerad med token. Dokumentet som observerats i ändringsströmmen i _id fältet representerar den återanvändbara token.

cursor = db.exampleCollection.watch(resume_after=resume_token)

Övervaka databasändringar med Change Stream

Nu ska vi förstå utdata från ändringsströmmen via exemplet.

I den här ändringsströmshändelsen ser vi att en ny post lades till inserted i samlingen exampleCollection av databasen cs; och händelseinformationen innehåller det fullständiga innehållet i det nyligen tillagda dokumentet.

{
  "_id": { "_data": "AeARBpQ/AAAA" }, // "resume_token"
  "operationType": "insert",
  "fullDocument": {
    "_id": { "$oid": "66e6f63e6f49ecaabf794958" },
    "employee_id": "17986",
    "name": "John",
    "position": "Software Engineer",
    "department": "IT",
    "rating": 4
  },
  "ns": { "db": "cs", "coll": "exampleCollection" },
  "documentKey": { "_id": { "$oid": "66e6f63e6f49ecaabf794958" } }
}

Anpassa data i Change Stream

Anpassa dina utdata för ändringsströmmen genom att ange en matris med en eller flera pipelinesteg under konfigurationen. De operatörer som stöds är följande.

  • $addFields
  • $match
  • $project
  • $set
  • $unset

Begränsningar

  • Historiska ändringsströmhändelser från den tidigare tidslinjen stöds ännu inte.
  • Ändringsströmhändelser i kluster med flera fragment stöds ännu inte.
  • Markörer för ändringsström måste återinitieras efter en övergångshändelse i det aktuella tillståndet.
  • Update händelsen har ännu inte stöd för uppdateringsbeskrivning.
  • pre-image är ett alternativ som inte stöds.
  • $changestream som en kapslad pipeline i en annan fas stöds ännu inte.