Просто из любопытства вы можете попробовать добавить конструктор без параметров в запись. Это определенно хак - на самом деле он использует ошибку в компиляторе F # - но он может работать:
type Products =
{ mutable _id : ObjectId
mutable name : string }
// Horrible hack: Add member that looks like constructor
member x.``.ctor``() = ()
Объявление member
добавляет член со специальным именем .NET, которое используется для конструкторов, поэтому .NET считает, что это конструктор. Я буду очень осторожен в использовании этого, но это может работать в вашем сценарии, потому что элемент отображается как конструктор через Reflection.
Если это единственный способ получить сжатое объявление типа, которое работает с библиотеками, такими как MongoDB, то это, вероятно, побудит команду F # решить проблему в будущей версии языка (например, я мог бы легко представить какой-то специальный атрибут, который заставит компилятор F # добавить конструктор без параметров).