Как выбрать несколько символов в mongodb? - PullRequest
0 голосов
/ 04 июля 2018

Я пытаюсь это понять:

"Рассчитайте количество людей, которые живут по почтовому индексу в США, где город начинается с одного из следующих символов: B, D, O, G, N или М. "

Итак, написание и использование конвейера агрегации, например:

 db.zips.aggregate( { $project :{digits : {$substr : [ "$city", 0, 1] }, pop : 1, city : "$city", zip : "$_id", state : 1}},{ $match :{ digits : /\M/ } },{ $group :{_id : null, pop : { $sum : "$pop"}}})

Успешное получение результата только с M цифрой, но я хочу добавить еще: B, D, O, G, N

{ "_id" : null, "pop" : 19499064 }

Попытка добавить другие цифры, например:

db.zips.aggregate( { $project :{digits : {$substr : [ "$city", 0, 1] }, pop : 1, city : "$city", zip : "$_id", state : 1}},{ $match :{ digits :  /\M/, /\B/, /\D/, /\O/,/\G/,/\N/ } },{ $group :{_id : null, pop : { $sum : "$pop"}}})

И получаю ошибку:

2018-07-03T20:47:07.273+0300 E QUERY    [thread1] SyntaxError: invalid property id @(shell):1:151

P.S. Я знаю о:

{ $match:  { city: { $in: [ /^b.*/i, /^d.*/i, /^o.*/i, /^g.*/i, /^n.*/i, /^m.*/i ] } } }

Но как правильно представить цифры в первом варианте в формате выше? Как /\M/ с несколькими цифрами.

Любая помощь будет оценена.
...