.net F中MongoDb Find的投影结果#
我尝试使用MongoDB查询,并使用mongo投影返回部分结果 我已经知道了如何在没有投影的情况下进行查询,但不是部分结果。 这是我查找结果的函数:.net F中MongoDb Find的投影结果#,.net,mongodb,f#,mongodb-query,mongodb.driver,.net,Mongodb,F#,Mongodb Query,Mongodb.driver,我尝试使用MongoDB查询,并使用mongo投影返回部分结果 我已经知道了如何在没有投影的情况下进行查询,但不是部分结果。 这是我查找结果的函数: let Find)= 让collection=database.GetCollection m.z.zInner=false)投影到MyModelProjection1 查找匹配(fun(m:MyModel)->m.x=5)并投影到MyModelProjection2的文档 查找所有投影到MyModelProjection1或MyModelProj
let Find)=
让collection=database.GetCollection m.z.zInner=false)
投影到MyModelProjection1
(fun(m:MyModel)->m.x=5)
并投影到MyModelProjection2的文档
MyModelProjection1
或MyModelProjection2
您可以这样定义投影:
let projection1 =
Builders<MyModel>.Projection.Expression(fun model ->
{ id = model.id; y = model.y })
let projection2 =
Builders<MyModel>.Projection.Expression(fun model ->
{ id = model.id; x = model.x; z = model.z })
令人惊叹的!那绝对有效!你知道如何构造一个类似的结果排序定义吗
Builders.Sort
似乎没有.Expression
。它有升序(…)
(或降序(…)
),需要字段:字段定义->排序定义
,但我不知道如何构造这些…你可以试试,例如,让排序定义=Builders.Sort.Descending(有趣的文档->doc.x:>obj)
有意义。我希望会有更好的方法,不隐藏类型。非常感谢。
let one =
collection
.Find(fun m -> m.z.zInner = false)
.Project(projection1).ToEnumerable() |> List.ofSeq
let two =
collection
.Find(fun m -> m.x = 5)
.Project(projection2).ToEnumerable() |> List.ofSeq
let three =
collection
.Find(fun _ -> true)
.Project(projection1).ToEnumerable() |> List.ofSeq
let four =
collection
.Find(fun _ -> true)
.Project(projection1).ToEnumerable() |> List.ofSeq