Mongo c # query- агрегатное совпадение, как передать оператор In для проверки существования uid в списке <string> - PullRequest
0 голосов
/ 14 мая 2018
List<string> uidsToMatch= //recieving it as method parameter

Теперь я генерирую группу монго по запросу, используя Aggregate with Match.Внутри Match мне нужно проверить существование UID в UidsToMatch аналогично SQL в операторе.Если я использую его как .Match (c => c.Uid == "abc") для сопоставления с одним значением, он работает нормально, но мне нужно использовать что-то похожее на оператор In, чтобы сопоставить это c.Uid в приведенном выше списке uidsToMatch.Подскажите пожалуйста как это сделать.

var anonymousTypeList = mongoCollection.Aggregate().Match(c => c.Uid == ------).Group(key => new
                        {
                            Uid = key.Uid
                        },
                        group => new { Key = group.Key, MinIndex = group.Min(p => p.Time), MaxIndex = group.Max(p => p.Time) })
                        .ToList();

1 Ответ

0 голосов
/ 14 мая 2018

Вы хотите Any() и Contains() здесь:

string[] listUid = new [] { "abc", "def" };

// Then in the Match

.Match(c => c.listUid.Any(i => c.Uid.Contains(i));

Работает так же, как

{ "$match": { "Uid": { "$in": ["abc", "def"] } } }

Или даже:

.Match(c => listUid.Contains(c.Uid))

Немного короче и тоже самое

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...