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提供了。我自己也完全错过了。