Chechy Levas
Chechy Levas

Reputation: 2312

MongoDb and F#: How to select distinct values?

I'm using the latest (at the time of writing) version (2.8) of the C# MongoDb driver. I am using it from F#. I want to select the distinct values of a field in a collection.

From this old question, the following does not work:

let client = new MongoClient(connString)
let db = client.GetDatabase("AirQuality")
let col = db.GetCollection<ReadingValue>("ReadingValue")
let res = col.DistinctAsync<string>("SensorName","{}")

The type string is not compatible with the type FieldDefinition<ReadingValue,string>.

From this answer, the following does not work either

let fd : FieldDefinition<ReadingValue, string> = "" :> FieldDefinition<ReadingValue, string>

Upvotes: 1

Views: 237

Answers (1)

mickl
mickl

Reputation: 49955

In C# you can implicitly convert from string to FieldDefinition<T> (class implements implicit operator). Since types conversion works in a different way in F# you can use StringFieldDefinitionClass

let field = new StringFieldDefinition<ReadingValue, string>("SensorName")
let result = col.Distinct<string>(field, Builders<ReadingValue>.Filter.Empty)

Upvotes: 1

Related Questions