Представьте, что я храню этот объект (написанный с использованием литералов Ruby) в MongoDB:
{"tags" => ["foo", "bar"],
"jobs" => [{"title" => "Chief Donkey Wrangler", "tags" => ["donkeys"]}] }
Теперь я хочу искать объекты по тегам первого уровня данных, а не второго,Я могу написать такой запрос (используя библиотеку Ruby MongoDB):
things.find("tags" => {"$exists" => "foo"})
Это, очевидно, будет соответствовать первому примеру, но также будет соответствовать примеру, подобному этому:
{"tags" => ["baz", "bar"],
"jobs" => [{"title" => "Trainee Donkey Wrangler", "tags" => ["donkeys", "foo"]}] }
Как мне убедиться, что я ищу только ключи верхнего уровня?Мне интересно знать ответ как на JavaScript, так и на Ruby и не зависящем от языка, поскольку я хотел бы использовать MongoDB в качестве межъязыкового хранилища.
Очевидно, я мог бы передать карту -уменьшить функцию до хранилища данных, чтобы выбрать то, что я пытаюсь получить, но мне интересно узнать, поддерживается ли оно на более высоком уровне (и чтобы сократить количество времени, которое я трачу на написание JavaScript-функций сокращения карты!)