MongoDB查询:在嵌套数组中搜索正则表达式

时间:2019-01-04 15:27:16

标签: javascript mongodb mongodb-query

鉴于已记录游戏的以下文档结构:

{
...
"rightkingpercenthp":[1,1,1,1,1,1,1,1,1,1,1,0.94,0.95,0],
"gameDetails":[
	{"playername":"Calvino",
	...
	"unitsPerWave":[
		["grarl_unit_id:0.5|9.5"],
		["hydra_unit_id:3.5|6.5","veteran_unit_id:1.5|6","grarl_unit_id:3.5|5.5","peewee_unit_id:8.5|7"],	       ["hydra_unit_id:3.5|6.5","veteran_unit_id:1.5|6","veteran_unit_id:8.5|7","peewee_unit_id:8.5|6",
    "fatalizer_unit_id:2.5|5"],
    ...
    ]
}
如何计算至少有一个游戏的数量gameDetails.unitsPerWave中的“ veteran_unit_id”(忽略名称后的坐标)?

2 个答案:

答案 0 :(得分:-1)

您可以使用嵌套的$elemMatch运算符在嵌套的gamesDetails.unitsPerWave数组和与字符串开头匹配的正则表达式中进行查询:

db.col.count({
    'gameDetails.unitsPerWave': {$elemMatch: {$elemMatch: {$regex: /^veteran_unit_id/}}}
})

答案 1 :(得分:-3)

在这种情况下,恕我直言,任何超级duper mongoDB查询都将等同于对数据库中每个记录的简单传递。