private static IMongoQuery QuantityQuery(String parameterName, Operator optor, String modifier, ValueExpression operand) { var quantity = operand.ToModelQuantity(); Fhir.Metrics.Quantity q = quantity.ToSystemQuantity().Canonical(); string decimals = Units.SearchableString(q); BsonValue value = q.GetValueAsBson(); List <IMongoQuery> queries = new List <IMongoQuery>(); switch (optor) { case Operator.EQ: queries.Add(M.Query.Matches("decimals", new BsonRegularExpression("^" + decimals))); break; default: queries.Add(ExpressionQuery("value", optor, value)); break; } if (quantity.System != null) { queries.Add(M.Query.EQ("system", quantity.System.ToString())); } queries.Add(M.Query.EQ("unit", q.Metric.ToString())); IMongoQuery query = M.Query.ElemMatch(parameterName, M.Query.And(queries)); return(query); }