Я использую последнюю (на момент написания) версию (2.8) драйвера C # MongoDb. Я использую это от F #. Я хочу получить минимальное и максимальное значения поля.
Похоже, мало что известно о том, как использовать MongoDb (последняя версия) из F #, поэтому я прошу прощения, если что-то пропустил.
Единственное, что я смог собрать, это следующее
let client = new MongoClient(connString)
let db = client.GetDatabase("AirQuality")
let col = db.GetCollection<ReadingValue>("ReadingValue")
let toDictionary (map : Map<_, _>) : Dictionary<_, _> = Dictionary(map)
let minb = ["$min", "$ReadingDate"] |> Map.ofList |> toDictionary
let maxb = ["$max", "$ReadingDate"] |> Map.ofList |> toDictionary
let grpb =
[
"_id", null
"min", minb
"max", maxb
] |> Map.ofList |> toDictionary
let aggb = ["$group", grpb] |> Map.ofList |> toDictionary
let doc = new BsonDocument(aggb)
let pl = new BsonDocumentPipelineStageDefinition<ReadingValue,string>(doc)
let epl = new EmptyPipelineDefinition<ReadingValue>()
let finalPipeline = epl.AppendStage(pl)
use result = col.Aggregate(finalPipeline)
Но возникает ошибка времени выполнения Cannot deserialize a 'String' from BsonType 'Document'.
Кроме того, я весьма удивлен тем, как неловко использовать MongoDb из F #.
Сообщение Закрыть Редактировать:
Этот вопрос о том, как выполнить задачу в F #. Вопрос , связанный с , обслуживает какой-то другой язык (вероятно, оболочку монго). Использование этих методов (насколько я знаю) в F # невозможно.