我是第一次使用MongoDB。我想从MongoDB集合的对象数组中检索特定字段。我需要帮助该怎么做?
在我的数据库中,有一个称为技能的结构,它以数组的形式出现。我想分别检索 skillName 和 experienceInMonths 。
{
"skills" : [
{
"skillName" : "sql",
"experienceInMonths" : 2
},
{
"skillName" : "java",
"experienceInMonths" : 3
}
]
}
我尝试使用$ elemMatch检索特定字段。
但是,我没有得到预期的结果。
> db.userforms.find({"emailId": "nagendra@gmail.com"},{"_id":0, "skills":1})
{ "skills" : [ { "skillName" : "sql", "experienceInMonths" : 2 }, { "skillName" : "java", "experienceInMonths" : 3 } ] }
> db.userforms.find({"emailId":"nagendra@gmail.com"},{"_id":0, "skills":{$elemMatch: {"skillName":"sql"}}})
{ "skills" : [ { "skillName" : "sql", "experienceInMonths" : 2 } ] }
我的实际结果是: {“ skills”:[{“ skillName”:“ sql”,“ experienceInMonths”:2}]}
但是所需的结果是: {“ skillName”:[“ sql”,“ java”]}
答案 0 :(得分:2)
使用聚合:
db.userforms.aggregate([
{ $match: { emailId: "nagendra@gmail.com" } },
{ $project: { skillName: { $concatArrays: "$skills.skillName" } } }
])
将返回:
{ "_id" : 0, "skillName" : [ "sql", "java" ] }