Я впервые работаю с MongoDB. Я хочу получить конкретное поле из массива объектов в коллекции MongoDB. Мне нужна помощь, как это сделать?
В моей базе данных есть структура, называемая навыками, которая представлена в виде массива. Я хочу получить как Название навыка, так и опыт по отдельности.
{
"skills" : [
{
"skillName" : "sql",
"experienceInMonths" : 2
},
{
"skillName" : "java",
"experienceInMonths" : 3
}
]
}
Я попытался получить конкретное поле с помощью $ elemMatch.
Но я не получаю ожидаемого результата.
> db.userforms.find({"emailId": "[email protected]"},{"_id":0, "skills":1})
{ "skills" : [ { "skillName" : "sql", "experienceInMonths" : 2 }, { "skillName" : "java", "experienceInMonths" : 3 } ] }
> db.userforms.find({"emailId":"[email protected]"},{"_id":0, "skills":{$elemMatch: {"skillName":"sql"}}})
{ "skills" : [ { "skillName" : "sql", "experienceInMonths" : 2 } ] }
Мой фактический результат: {"навыки": [{"skillName": "sql", "experienceInMonths": 2}]}
Но требуемый результат: {"skillName": ["sql", "java"]}



Использовать агрегацию:
db.userforms.aggregate([
{ $match: { emailId: "[email protected]" } },
{ $project: { skillName: { $concatArrays: "$skills.skillName" } } }
])
вернусь:
{ "_id" : 0, "skillName" : [ "sql", "java" ] }
Долли хочет «имя навыка», а не «навыки»;)
"skillName" будет. Я неправильно написал возврат. (отредактировано)
Вы запрашиваете userforms? Я написал db.users в первый раз, но потом отредактировал. Должно сработать, я проверил.
попробуйте этот
{ $project: { skillName: "$skills.skillName" } }