我一直试图在仅使用记录但没有成功的情况下插入MongoDB。
我的问题是我想创建一个简单的插入函数,我发送一个泛型类型并将其插入到数据库中。
喜欢这样。
let insert (value: 'a) =
let collection = MongoClient().GetDatabase("db").GetCollection<'a> "col"
collection.InsertOne value
通过此功能,我尝试插入以下记录。
// Error that it can't set the Id
type t1 = {
Id: ObjectId
Text: string
}
// Creates the record perfectly but doesn't generate a new Id
type t2 = {
Id: string
Text: string
}
// Creates the record and autogenerates the Id but doesn't insert the Text, and there are two Ids (_id, Id@)
type t3 = {
mutable Id: ObjectId
Text: string
}
// Creates the record and autogenerates the Id but for every property it generates two on MongoDB (_id, Id@, Text, Text@)
type t4 = {
mutable Id: ObjectId
mutable Text: string
}
所以有人可以为此考虑解决方案,或者我不得不使用课程。
// Works!!!
type t5() =
member val Id = ObjectId.Empty with get, set
member val Name = "" with get, set
另外,有没有人知道为什么当C#MongoDB库翻译了mutable时,他最后获得了@的属性? 我可以将所有属性设置为可变,但这不是我的第一选择,因为他在数据库上创建多个属性非常糟糕。
答案 0 :(得分:3)
您可以尝试使用CLIMutable
(并且没有mutable
字段)对您的记录进行注释。
@
最终在数据库中,因为MongoDB使用反射和F#实现mutable
支持字段fieldName@