public string BuildRelationshipExpression(string fieldName, string relationshipOperator, string value) { var operatorToken = TranslateRelationshipOpertor(relationshipOperator); var manipulatedValue = value.Trim(); if (operatorToken == "$regex") { var regexPattern = ParseHelpers.HasQuotes(value) ? Regex.Escape(ParseHelpers.StripQuotes(value)).Replace(@"\", @"\\").Replace("%", ".*").Replace("_", ".") : value; manipulatedValue = $"'^{regexPattern}$', $options: 'i'"; } else if (operatorToken.InSet("$in", "$nin")) { if (manipulatedValue.StartsWith("(") && manipulatedValue.EndsWith(")")) { manipulatedValue = $"[{manipulatedValue.Substring(1, manipulatedValue.Length - 2)}]"; } } else if (DateTime.TryParse(ParseHelpers.StripQuotes(value), out var parsedTimestamp)) { manipulatedValue = $"ISODate('{parsedTimestamp:yyyy-MM-ddTHH:mm:ssZ}')"; } else if (value.ToLowerInvariant().InSet("null", "true", "false")) { manipulatedValue = manipulatedValue.ToLowerInvariant(); } return($"{{ \"{fieldName}\" : {{ {operatorToken} : {manipulatedValue} }} }}"); }