gpt4 book ai didi

arrays - 仅从 MongoDB 集合中的对象数组中检索所需的元素

转载 作者:可可西里 更新时间:2023-11-01 10:08:50 24 4
gpt4 key购买 nike

我是第一次使用 MongoDB。我想从 MongoDB 集合中的对象数组中检索特定字段。我需要帮助如何做到这一点?

在我的数据库中有一个叫做skills的结构体,它是数组形式的。我想分别检索 skillNameexperienceInMonths

{
"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 } ] }

我的实际结果是:{“技能”:[{“技能名称”:“sql”,“experienceInMonths”:2}]}

但要求的结果是:{“技能名称”:[“sql”,“java”]}

最佳答案

使用聚合:

db.userforms.aggregate([
{ $match: { emailId: "nagendra@gmail.com" } },
{ $project: { skillName: { $concatArrays: "$skills.skillName" } } }
])

将返回:

{ "_id": 0, "skillName": [ "sql", "java"] }

关于arrays - 仅从 MongoDB 集合中的对象数组中检索所需的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54109315/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com