From 8b04eb26956f33bd6827ccc309fd52813fac1dfc Mon Sep 17 00:00:00 2001 From: Ravi-Raghavan <56519163+Ravi-Raghavan@users.noreply.github.com> Date: Tue, 2 Aug 2022 09:31:14 -0400 Subject: [PATCH] VS-59: Support Index Keys Wildcard --- src/MongoDB.Analyzer/Core/ConstantsMapper.cs | 3 +++ .../Builders/BuildersIndexKeys.cs | 14 ++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/src/MongoDB.Analyzer/Core/ConstantsMapper.cs b/src/MongoDB.Analyzer/Core/ConstantsMapper.cs index 6b37317b..61938aff 100644 --- a/src/MongoDB.Analyzer/Core/ConstantsMapper.cs +++ b/src/MongoDB.Analyzer/Core/ConstantsMapper.cs @@ -22,6 +22,8 @@ internal sealed class ConstantsMapper private const string StringPrefix = "s__"; private const string RegexLookahead = "(?![\\w\"\\.])"; private const string RegexLookbehind = "(? _originalToSyntax; private IDictionary _mqlRemapping; @@ -209,6 +211,7 @@ private void AddMapping(string source, string target, bool isString) { _mqlRemapping[$"{RegexLookbehind}\"{source}\"{RegexLookahead}"] = target; _mqlRemapping[$"/{source}/"] = $"/{target}/"; + _mqlRemapping[$"{RegexLookbehind}\"{source}{WildcardRegex}\"{RegexLookahead}"] = $"{target}{WildcardSuffix}"; } else { diff --git a/tests/MongoDB.Analyzer.Tests.Common.TestCases/Builders/BuildersIndexKeys.cs b/tests/MongoDB.Analyzer.Tests.Common.TestCases/Builders/BuildersIndexKeys.cs index 91576b37..91fdfc11 100644 --- a/tests/MongoDB.Analyzer.Tests.Common.TestCases/Builders/BuildersIndexKeys.cs +++ b/tests/MongoDB.Analyzer.Tests.Common.TestCases/Builders/BuildersIndexKeys.cs @@ -83,6 +83,20 @@ public void Text() _ = Builders.IndexKeys.Text(u => u.Address).Text("Vehicle"); } + [BuildersMQL("{ \"$**\" : 1 }")] + [BuildersMQL("{ \"Address.$**\" : 1 }")] + [BuildersMQL("{ \"SiblingsCount.$**\" : 1 }")] + [BuildersMQL("{ wildcardField.$** : 1 }")] + public void Wildcard() + { + _ = Builders.IndexKeys.Wildcard(); + _ = Builders.IndexKeys.Wildcard("Address"); + _ = Builders.IndexKeys.Wildcard(p => p.SiblingsCount); + + var wildcardField = "Vehicle"; + _ = Builders.IndexKeys.Wildcard(wildcardField); + } + [BuildersMQL("{ \"Name\" : \"text\", \"LastName\" : \"hashed\", \"Vehicle\" : \"2d\", \"Address\" : 1 }")] [BuildersMQL("{ \"Name\" : \"2d\", \"LastName\" : \"2dsphere\", \"Vehicle\" : \"text\", \"Address\" : -1, \"SiblingsCount\" : \"hashed\", \"TicksSinceBirth\" : 1 }")] [BuildersMQL("{ \"Name\" : \"2d\", \"LastName\" : \"2d\", \"Address\" : \"text\", \"Vehicle\" : \"text\" }")]