iArchived时的MongoDB C#驱动程序唯一索引部分过滤表达式为false

iArchived时的MongoDB C#驱动程序唯一索引部分过滤表达式为false,c#,mongodb,C#,Mongodb,我有一个可以删除的项目集合。只要isArchived为false,我希望名称上有一个唯一的索引。我可以用mongo命令行来完成,但是我似乎找不到太多关于C#driver的文档。目前我们有以下索引: await JobsCollection.Indexes.CreateOneAsync("{Name: 1}", new CreateIndexOptions { Unique = true }); 我认为这将成为接近于:

我有一个可以删除的项目集合。只要
isArchived
false
,我希望名称上有一个唯一的索引。我可以用mongo命令行来完成,但是我似乎找不到太多关于C#driver的文档。目前我们有以下索引:

        await JobsCollection.Indexes.CreateOneAsync("{Name: 1}", new CreateIndexOptions
        {
            Unique = true
        });
我认为这将成为接近于:

        await JobsCollection.Indexes.CreateOneAsync("{Name: 1}", new CreateIndexOptions<JobModel>
        {
            Unique = true,
            PartialFilterExpression = /*something here*/
        });
wait JobsCollection.index.CreateOneAsync(“{Name:1}”),新的CreateIndexOptions
{
唯一=正确,
PartialFilterExpression=/*此处的内容*/
});

但我不完全确定“这里有什么”应该放在哪里。我可以只做一个字符串,比如
“{IsArchived:{$eq:false}”
,或者有更好的方法吗?谢谢。

好吧,把引用的东西放在那里完全行得通。如果任何人有一个非硬编码的方式,请分享它以及

await JobsCollection.Indexes.CreateOneAsync("{Name: 1}", new CreateIndexOptions<JobModel>
{
  Unique = true,
  PartialFilterExpression = "{ IsArchived: { $eq : true } }"
});
wait JobsCollection.index.CreateOneAsync(“{Name:1}”),新的CreateIndexOptions
{
唯一=正确,
PartialFilterExpression=“{IsArchived:{$eq:true}”
});
一个更类型化的示例:

await JobsCollection.Indexes.CreateOneAsync(
                Builders<JobModel>.IndexKeys
                    .Ascending(i => i.Name), 
                new CreateIndexOptions<JobModel>
                {
                    Unique = true,
                    PartialFilterExpression = Builders<JobModel>.Filter.Eq(i => i.IsArchived, true)
                });
wait JobsCollection.index.CreateOneAsync(
索引键
.升序(i=>i.Name),
新的CreateIndexOptions
{
唯一=正确,
PartialFilterExpression=Builders.Filter.Eq(i=>i.IsArchived,true)
});

关键问题是new CreateIndexOptions()没有提供PartialFilterExpression,但是new CreateIndexOptions提供了。我自己也完全错过了。