如何在mongodb中选择几个字符?

时间:2018-07-04 14:26:51

标签: mongodb mongodb-query aggregation-framework

我正在努力实现它:

  

”计算在美国居住在邮政编码中的人数,   该城市以以下特征之一开头:B,D,O,G,N   或M。”

因此,编写和使用如下的聚合管道:

 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

PS :我知道:

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

但是,如何在上述格式的第一个变体中正确显示数字?像/\M/一样有几个数字。

任何帮助将不胜感激。

0 个答案:

没有答案