Я пытаюсь это понять:
"Рассчитайте количество людей, которые живут по почтовому индексу в США, где
город начинается с одного из следующих символов: 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/
с несколькими цифрами.
Любая помощь будет оценена.