【发布时间】:2023-04-09 19:15:01
【问题描述】:
我正在尝试使用 MongoDB.Driver 查询 MongoDB 并使用 mongo 投影返回部分结果。
我已经弄清楚如何在没有投影的情况下进行查询,但不是部分结果。 这是我查找结果的函数:
let Find<'a> collectionName (filterDefinition: FilterDefinition<'a>) =
let collection = database.GetCollection<'a> collectionName
collection.Find(filterDefinition).ToEnumerable() |> List.ofSeq
这是我如何称呼它的一个例子:
let findByIdFilter id =
Builders<MyModel>.Filter.Eq((fun s -> s.id), id)
let results = Find collectionName (findByIdFilter id)
假设我的模型是这样的:
type MyInnerModel = {
zInner: bool
}
type MyModel = {
id: ObjectId
x: int
y: double
z: MyInnerModel
}
这些是我的预测:
type MyModelProjection1 = {
id: ObjectId
y: double
}
type MyModelProjection1 = {
id: ObjectId
x: int
z: MyInnerModel
}
如何针对以下场景构建查询:
- 查找与
(fun (m: MyModel) -> m.z.zInner = false)匹配并投影到MyModelProjection1的文档 - 查找与
(fun (m: MyModel) -> m.x = 5)匹配并投影到MyModelProjection2的文档 - 查找投影到
MyModelProjection1或MyModelProjection2的所有文档
【问题讨论】:
标签: .net mongodb f# mongodb-query mongodb.driver