Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
f#使用记录在MongoDB上插入_Mongodb_F# - Fatal编程技术网

f#使用记录在MongoDB上插入

f#使用记录在MongoDB上插入,mongodb,f#,Mongodb,F#,我已经尝试了一段时间,只使用记录在MongoDB上插入,但没有成功 我的问题是,我想创建一个简单的插入函数,我发送一个泛型类型,然后将其插入数据库 像这样 let insert (value: 'a) = let collection = MongoClient().GetDatabase("db").GetCollection<'a> "col" collection.InsertOne value 那么,是否有人能想出解决这个问题的方法,或者我必须使用一个类

我已经尝试了一段时间,只使用记录在MongoDB上插入,但没有成功

我的问题是,我想创建一个简单的插入函数,我发送一个泛型类型,然后将其插入数据库

像这样

let insert (value: 'a) = 
    let collection = MongoClient().GetDatabase("db").GetCollection<'a> "col"
    collection.InsertOne value
那么,是否有人能想出解决这个问题的方法,或者我必须使用一个类

// Works!!!
type t5() = 
    member val Id = ObjectId.Empty with get, set
    member val Name = ""  with get, set
还有,有人知道为什么当C#MongoDB库翻译可变表时,他会在末尾使用@获得属性吗?
我可以将我的所有属性设置为可变,尽管这不是我的第一选择,但让他在DB上创建多个属性是非常糟糕的。

您可以尝试使用(并且没有
可变的
字段)注释您的记录


@
s最终出现在数据库中,因为MongoDB使用反射和F#使用备份字段
fieldName@

实现了
mutable
?NET驱动程序?有点让人困惑,你在问什么,试图弄清楚你是想让一个
ObjectId
值自动分配给一个存储为
“Id”
的字段,还是仅仅意味着
“\u Id”
会自动添加。我使用的是默认的MongoDB C驱动程序。我的意思是应该自动添加“_id”,但如果您使用记录,则不会自动添加“_id”,因为没有设置,如果他在插入数据库之前更改值,这很有意义,这是一种错误的做法,因为如果你使用记录,它将不起作用。我认为使用CLIMutable与将我的所有属性设置为mutable是一样的,但事实证明并非如此。在我的情况下,MongoDB驱动程序仍然不允许ID为null。因为我没有看到任何其他的f#开发者面临与我相同的问题,所以我在这里真的是在未知的水域航行。我猜每个人都在做我现在正在做的事情,使用的类在与C#库接口时工作得非常好。谢谢你的帮助。看起来这篇博客文章展示了
// Works!!!
type t5() = 
    member val Id = ObjectId.Empty with get, set
    member val Name = ""  with get, set