Создание индексов вложенных подобъектов массива

#c# #.net #mongodb

#c# #.net #mongodb

Вопрос:

У меня есть несколько объектов следующей структуры:

 class SubObject {
    public string Id { get; set; }
}
class MyObject {
    public IEnumerable<SubObject> SubObjects { get; set; }
}
  

Я хотел бы создать индекс по индексу MyObject.SubObjects (есть поиск объектов):

 var filter = Builders<MyObject>.Filter.Eq("subObjects.id", someVal);
await Collection.Find(filter).ToListAsync();
  

Я пытаюсь создать его следующим образом:

 var models = new List<CreateIndexModel<MyObject>> {
   new CreateIndexModel<MyObject>("{ subObjects.id: 1 }")
};
Collection.Indexes.CreateMany(models);
  

К сожалению, в настоящее время я получаю сообщение об ошибке:
System.FormatException: 'Invalid JSON input ''.'

Что может быть не так, что я могу улучшить?

Комментарии:

1. Это именно то, что говорит ошибка — недопустимый JSON. Допустимым является '{"subObjects.id": 1 }' . Ключ должен быть заключен в кавычки.

Ответ №1:

Вам нужно будет заключить ваше поле в кавычки внутри строки json.

 var models = new List<CreateIndexModel<MyObject>> {
   new CreateIndexModel<MyObject>("{ "subObjects.id": 1 }")
};
Collection.Indexes.CreateMany(models);