gpt4 book ai didi

mongodb - 不能使用 MongoDB.Driver Include ProjectionDefinition 的 LINQ 表达式重载

转载 作者:可可西里 更新时间:2023-11-01 09:47:43 25 4
gpt4 key购买 nike

我很难尝试使用 F# 在 MongoDB 数据库中进行聚合。我构建了这个小示例代码来说明:

open System
open MongoDB.Driver
open MongoDB.Bson

type MyDocument =
{ Id : BsonObjectId
Foo : string
Bar : int
Baz : bool
Quz : DateTime }

[<EntryPoint>]
let main _ =
let client = new MongoClient("mongodb://localhost:27017/faggregate")
let db = client.GetDatabase("faggregate")
let collection = db.GetCollection<MyDocument>("aggregations")

let documents = collection.Aggregate().Group(Builders<MyDocument>.Projection.Include(fun x -> x.Foo))

0

这停留在:

No overloads match for method 'Include'. The available overloads are shown below.
member Include:
field: FieldDefinition<MyDocument>
-> ProjectionDefinition<MyDocument>

但是ProjectionDefinitionBuilderpublic ProjectionDefinition<TSource> Include(Expression<Func<TSource, object>> field)

有人已经能够将 MongoDB 聚合与 F# 结合使用了吗?

最佳答案

op_Implicit 是关键!在 MongoDB 文档上看到 ProjectionDefinition 可以从普通字符串(JSON-ones)创建,但在 F# 上应该使用 op_Implicit 显式调用此 implicit 运算符。所以……

let group = ProjectionDefinition<MyDocument,_>.op_Implicit("""{ _id: "$Foo"}""")
let documents = collection.Aggregate().Group(group)

像魅力一样工作,我可以像在纯 Mongo 中一样编写聚合

关于mongodb - 不能使用 MongoDB.Driver Include ProjectionDefinition 的 LINQ 表达式重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53075222/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com