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.
Med time to live (TTL)-funktionen kan databasen automatiskt låta data gå ut. Azure Cosmos DB for MongoDB använder Azure Cosmos DB:s grundläggande TTL-funktioner. Två lägen stöds: ange ett TTL-värde på hela samlingen och ange enskilda TTL-värden för varje dokument. Logiken som styr TTL-index och TTL-värden per dokument i Azure Cosmos DB för MongoDB är densamma som i Azure Cosmos DB.
TTL-index
Om du vill aktivera förfallodatum för dokumenten i en viss samling måste du skapa ett TTL-index (Time to Live). TTL-indexet är ett index i fältet _ts med värdet "expireAfterSeconds".
MongoDB-gränssnittsexempel:
globaldb:PRIMARY> db.coll.createIndex({"_ts":1}, {expireAfterSeconds: 10})
Kommandot i föregående exempel skapar ett index med TTL-funktioner.
Kommandots utdata innehåller olika metadata:
{
"_t" : "CreateIndexesResponse",
"ok" : 1,
"createdCollectionAutomatically" : true,
"numIndexesBefore" : 1,
"numIndexesAfter" : 4
}
När indexet har skapats tar databasen bort alla dokument i samlingen som inte har ändrats under de senaste 10 sekunderna.
Kommentar
_ts är ett Azure Cosmos DB-specifikt fält och är inte tillgängligt från MongoDB-klienter. Det är en reserverad egenskap (system) som innehåller tidsstämpeln för dokumentets senaste ändring.
var options = new CreateIndexOptions {ExpireAfter = TimeSpan.FromSeconds(10)};
var field = new StringFieldDefinition<BsonDocument>("_ts");
var indexDefinition = new IndexKeysDefinitionBuilder<BsonDocument>().Ascending(field);
await collection.Indexes.CreateOneAsync(indexDefinition, options);
Ange TTL-värde för ett dokument
TTL-värden per dokument stöds också. Om du vill använda den här funktionen lägger du till en rotnivåegenskap "ttl" (gemener) i ett eller flera dokument och skapar ett TTL-index för samlingen enligt beskrivningen tidigare. TTL-värdet som anges i ett dokument åsidosätter samlingens TTL-värde.
TTL-värdet måste vara ett int32. Du kan också använda ett int64 som passar i int32 eller dubbelt med någon decimaldel som passar i int32. Värden för TTL-egenskapen som inte överensstämmer med dessa specifikationer tillåts men behandlas inte som ett beskrivande TTL-värde för dokument.
TTL-värdet för dokumentet är valfritt. Dokument utan ett TTL-värde kan infogas i samlingen. I det här fallet respekteras samlingens TTL-värde.
Följande dokument har giltiga TTL-värden. När dokumenten är infogat används dokumentets TTL-värden istället för samlingens TTL-värden. Därför tas dokumenten bort efter 20 sekunder.
db.coll.insert({id:1, location: "Paris", ttl: 20.0})
db.coll.insert({id:1, location: "Paris", ttl: NumberInt(20)})
db.coll.insert({id:1, location: "Paris", ttl: NumberLong(20)})
Följande dokument har ogiltiga TTL-värden. Databasen infogar dokumenten, men uppfyller inte dokumentets TTL-värde. Databasen tar bort dokumenten efter 10 sekunder enligt samlingens TTL-värde.
db.coll.insert({id:1, location: "Paris", ttl: 20.5}) //TTL value contains non-zero decimal part.
db.coll.insert({id:1, location: "Paris", ttl: NumberLong(2147483649)}) //TTL value is greater than Int32.MaxValue (2,147,483,648).