public ProjectionDefinition <T, T> Compile <T>(FieldSpec fieldSpec) { var sb = new StringBuilder(); sb.Append("{ "); for (int i = 0; i < fieldSpec.Fields.Length; i++) { var field = fieldSpec.Fields[i]; string name = MongoNameFixer.Field(field.Name); if (String.CompareOrdinal(name, "textScore") == 0) { sb.AppendFormat("{0} : {{ $meta : \"textScore\" }}", name); } else if (field.Presence == FieldSpecPresence.Included) { sb.AppendFormat("{0} : 1", name); } else { sb.AppendFormat("{0} : 0", name); } if (i < fieldSpec.Fields.Length - 1) { sb.Append(", "); } } sb.Append(" }"); return(new BsonDocumentProjectionDefinition <T, T>(BsonSerializer.Deserialize <BsonDocument>(sb.ToString()))); }
protected override RqlExpression VisitIdentifier(RqlIdentifierExpression node) { sb.Append("\""); sb.Append(MongoNameFixer.Field(node.Name)); sb.Append("\": "); return(node); }
public SortDefinition <T> Compile <T>(SortSpec sortSpec) { var sb = new StringBuilder(); sb.Append("{ "); for (int i = 0; i < sortSpec.Fields.Length; i++) { var field = sortSpec.Fields[i]; var name = MongoNameFixer.Field(field.Name); sb.AppendFormat("{0} : {1}", name, field.Order == SortSpecSortOrder.Ascending ? "1" : "-1"); if (i < sortSpec.Fields.Length - 1) { sb.Append(", "); } } sb.Append(" }"); return(new BsonDocumentSortDefinition <T>(BsonSerializer.Deserialize <BsonDocument>(sb.ToString()))); }