У меня есть первый проект, который пытается получить значение из mongodb, используя MongoDB.Driver. Я могу подключиться к базе данных и «GetAll», но когда делаю запрос, которому нужен ObjectId, я получаю это исключение:
Exception has occurred: CLR/System.IndexOutOfRangeException
An exception of type 'System.IndexOutOfRangeException' occurred in MongoDB.Bson.dll but was not handled in user code: 'Index was outside the bounds of the array.'
если быть более конкретным:
at MongoDB.Bson.ObjectId.FromByteArray(Byte[] bytes, Int32 offset, Int32& a, Int32& b, Int32& c)
at MongoDB.Bson.ObjectId..ctor(String value)
at TodoApi.Controllers.TodoController.GetById(String id) ...
Метод GetById:
[HttpGet("{id}", Name = "GetTodo")]
public IActionResult GetById(string id)
{
var objId = new ObjectId(id); << this line exceptions occures
var item = objds.GetTodoItem(objId);
if (item == null) { return NotFound(); }
return new ObjectResult(item);
}
Метод GetTodoItem от DataAcess:
public TodoItem GetTodoItem(ObjectId id)
{
var res = Query<TodoItem>.EQ(p=>p.Id,id);
return _db.GetCollection<TodoItem>("TodoApi").FindOne(res);
}
.csproj
<ItemGroup>
<PackageReference Include="MongoDB.Driver" Version="2.5.0" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="MongoDB.Driver.Core" Version="2.5.0" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="MongoDB.Bson" Version="2.5.0" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="mongocsharpdriver" Version="2.5.0" />
</ItemGroup>