MongoDB - запрос встроенного документа, но проекция, показывающая путь к ключу / значению? - PullRequest
0 голосов
/ 15 мая 2018

Так что в основном я хочу, чтобы

 db.scoreFacts.find(
  {"instrumentRanges.flute.minPitch": {$gte: 0, $lte:56}}, 
  {"instrumentRanges.flute.minPitch": 1})

вернул

{ "_id" : "Bach_Brandenburg5_Mov1.xml", "minPitch" : 50 }

, но вместо этого я получаю:

{ "_id" : "Bach_Brandenburg5_Mov1.xml", "instrumentRanges" : { "flute" : { "minPitch" : 50 } } }

По сути, путь к "minPitch" возвращаетсячто не то что мне нужно.Как я могу добиться желаемого результата только с помощью .find () (без карты и т. Д.)?Благодаря.

1 Ответ

0 голосов
/ 15 мая 2018

Вы не можете сделать это с помощью стандартного запроса .find(). Если вы хотите изменить структуру документа, посмотрите на вызов aggregate(). Затем вы можете использовать проекцию, чтобы определить результирующие поля, которые вы хотите.

Например:

db.scoreFacts.aggregate([
    { $match: {"instrumentRanges.flute.minPitch": {$gte: 0, $lte:56}} },
    { $project: {"minPitch": "$instrumentRanges.flute.minPitch"} }
]);

Для получения дополнительной информации см. соответствующую документацию . Кроме того, взгляните на обязательное раздел конвейера агрегации .

Примечание: я не проверял вышеупомянутый запрос сам, поэтому вам может потребоваться изменить его, чтобы получить желаемое поведение.

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