使用 MongoDB.Driver 2 在 Azure DocumentDB 中设置生存时间 (TTL)
Setting time to live (TTL) in Azure DocumentDB using MongoDB.Driver 2
我正在尝试使用 MongoDB.Driver 在 DocumentDB 中实现 TTL。我创建了一个像
这样的索引
await collection.Indexes.CreateOneAsync
(
Builders<T>.IndexKeys.Ascending("_id123"),
new CreateIndexOptions { ExpireAfter = new TimeSpan(0, 0, 10) }
);
以上代码创建 _id123 索引没有任何错误,但插入的数据不会在 10 秒后过期。请帮我解决这个问题。
根据我的经验,请尝试使用_ts field
。我们可以从document中获得更多信息。
我做了一个在我这边创建 TTL 索引的演示,它工作正常。以下是详细步骤。
1.Create C# 控制台项目并添加 MongoDB SDK
2.Add一个人Class
using MongoDB.Bson;
public class Person
{
public ObjectId Id { get; set; }
public string Name { get; set; }
}
3.Create MongodB 客户端,我们可以从 Azure 门户获取代码。
4.Add 文件到 collection
var db = mongoClient.GetDatabase("dbname");
var collection = db.GetCollection<Person>("collectionname");
collection.InsertOne(new Person() {Name = "tom"});
5.Check 来自 Azure 门户
6.Create _ts
字段上的 TTL 索引
var indexs = collection.Indexes.CreateOneAsync(Builders<Person>.IndexKeys.Ascending("_ts"),
new CreateIndexOptions { ExpireAfter = new TimeSpan(0, 0, 10) }).Result;
Package.config 文件
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="MongoDB.Bson" version="2.4.3" targetFramework="net451" />
<package id="MongoDB.Driver" version="2.4.3" targetFramework="net451" />
<package id="MongoDB.Driver.Core" version="2.4.3" targetFramework="net451" />
<package id="System.Runtime.InteropServices.RuntimeInformation" version="4.3.0" targetFramework="net451" />
</packages>
我找到的更简单的方法是:
转到您的数据库 > 配置 > 预览功能 > 启用每文档 TTL
在 DB 数据资源管理器、缩放和设置中转到您的集合,然后设置您希望对象存活的时间:
您可以在将对象插入数据库时指定每个对象的 TTL(这将覆盖之前建立的集合 TTL)。您只需要在文档中添加一个名为 "ttl" 的字段,它是一个 double
,格式为:ttl = 3600.0
就是这样,文件将在一个小时后自行删除。祝你好运!
我正在尝试使用 MongoDB.Driver 在 DocumentDB 中实现 TTL。我创建了一个像
这样的索引await collection.Indexes.CreateOneAsync
(
Builders<T>.IndexKeys.Ascending("_id123"),
new CreateIndexOptions { ExpireAfter = new TimeSpan(0, 0, 10) }
);
以上代码创建 _id123 索引没有任何错误,但插入的数据不会在 10 秒后过期。请帮我解决这个问题。
根据我的经验,请尝试使用_ts field
。我们可以从document中获得更多信息。
我做了一个在我这边创建 TTL 索引的演示,它工作正常。以下是详细步骤。
1.Create C# 控制台项目并添加 MongoDB SDK
2.Add一个人Class
using MongoDB.Bson;
public class Person
{
public ObjectId Id { get; set; }
public string Name { get; set; }
}
3.Create MongodB 客户端,我们可以从 Azure 门户获取代码。
4.Add 文件到 collection
var db = mongoClient.GetDatabase("dbname");
var collection = db.GetCollection<Person>("collectionname");
collection.InsertOne(new Person() {Name = "tom"});
5.Check 来自 Azure 门户
6.Create _ts
字段上的 TTL 索引
var indexs = collection.Indexes.CreateOneAsync(Builders<Person>.IndexKeys.Ascending("_ts"),
new CreateIndexOptions { ExpireAfter = new TimeSpan(0, 0, 10) }).Result;
Package.config 文件
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="MongoDB.Bson" version="2.4.3" targetFramework="net451" />
<package id="MongoDB.Driver" version="2.4.3" targetFramework="net451" />
<package id="MongoDB.Driver.Core" version="2.4.3" targetFramework="net451" />
<package id="System.Runtime.InteropServices.RuntimeInformation" version="4.3.0" targetFramework="net451" />
</packages>
我找到的更简单的方法是:
转到您的数据库 > 配置 > 预览功能 > 启用每文档 TTL
在 DB 数据资源管理器、缩放和设置中转到您的集合,然后设置您希望对象存活的时间:
您可以在将对象插入数据库时指定每个对象的 TTL(这将覆盖之前建立的集合 TTL)。您只需要在文档中添加一个名为 "ttl" 的字段,它是一个
double
,格式为:ttl = 3600.0
就是这样,文件将在一个小时后自行删除。祝你好运!