Запрос Mongodb: поиск регулярных выражений во вложенном массиве - PullRequest
0 голосов
/ 04 января 2019

Учитывая следующую структуру документа записанных игр:

{
...
"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"],
    ...
    ]
}
Как подсчитать количество игр хотя бы с одним, например? "veteran_unit_id" в gameDetails.unitsPerWave (игнорирование координат после имени)?

Ответы [ 2 ]

0 голосов
/ 06 января 2019

Вы можете использовать вложенные $elemMatch операторы для запроса в пределах вашего вложенного gamesDetails.unitsPerWave массива и регулярного выражения, соответствующего началу строк:

db.col.count({
    'gameDetails.unitsPerWave': {$elemMatch: {$elemMatch: {$regex: /^veteran_unit_id/}}}
})
0 голосов
/ 05 января 2019

В этом случае, IMHO, любой запрос super-duper mongoDB будет равен простому пропуску каждой записи в базе данных.

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