Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Ä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
- Logga in på Azure CLI
az login
- 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
- 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\"]}"
- 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.
- Se till att svarsnyttolasten innehåller
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.