我们说我有一个抽象类Animal
,子类Dog
和Cat
。
我的MongoDB表存储所有动物,并在文档中使用_t
类型鉴别器字段。
我想要做的是在2个属性上创建一个全文索引,一个仅存在于Dog
文档中,另一个仅存在于Cat
个文档中。 JSON非常直接:
{
"dog_only_field" : "text",
"cat_only_field" : "text"
}
但是我想和官方的C#驱动程序一起做这件事。我试过这个:
var builder = Builders<Animal>.IndexKeys;
var keys = builder.Text(x => ((Dog)x).MyText).Text(x => ((Cat)x).MyText);
col.Indexes.CreateOne(keys);
但得到了Unable to determine the serialization information for x => Convert(x).Message.
答案 0 :(得分:1)
我通过使用将JSON属性名称指定为字符串的字段定义来实现此目的:
var dogFieldDef = new StringFieldDefinition<Animal>("dog_only_field");
var catFieldDef = new StringFieldDefinition<Animal>("cat_only_field");
var builder = Builders<Animal>.IndexKeys;
var key = builder
.Text(dogFieldDef)
.Text(catFieldDef);
col.Indexes.CreateOne(key);