MongoDB: используйте оператор $ positional для запроса

У меня есть коллекция с записями, которые выглядят следующим образом:

{
    "userid": 1, 
    "contents": [ 
            { "tag": "whatever", "value": 100 }, 
            {"tag": "whatever2", "value": 110 } 
    ] 
}

Я хотел бы иметь возможность запрашивать эту коллекцию и возвращать только одну часть массива: ту, которая соответствует запросу. Я пытаюсь использовать для этого оператор $ positional, но пока это не сработало.

Вот что я хотел бы сделать более точно:

collection.find({'contents.tag':"whatever"},{'contents.$.value':1})

В результате я ожидаю, что sth будет иметь только значение, соответствующее записи в массиве, который соответствует запросу, которое в данном случае равно 100.

Вы знаете, что не так? Я думал, что, возможно, оператор $ можно использовать только для обновления, а не для запросов. Кто-нибудь в курсе?

Спасибо!

7
задан Ankur Verma 21 June 2016 в 08:15
поделиться