首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >仅从MongoDB集合中的对象数组中检索所需的元素

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

Stack Overflow用户
提问于 2019-01-09 11:41:28
回答 1查看 52关注 0票数 2

我第一次与MongoDB合作。我想从MongoDB集合中的对象数组中检索特定字段。我需要帮助怎么做?

在我的数据库中有一个叫做技能的结构,它是以数组的形式出现的。我想分别检索experienceInMonthsskillName

代码语言:javascript
复制
{
"skills" : [
        {
            "skillName" : "sql",
            "experienceInMonths" : 2
        },
        {
            "skillName" : "java",
            "experienceInMonths" : 3
        }
    ]
}

我试图使用$elemMatch检索特定字段。

但是,我没有得到预期的结果。

代码语言:javascript
复制
> 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 } ] }

实际结果是:{“技能”:{ "skillName“:"sql","experienceInMonths”:2}

但是所需的结果是:{"skillName“:"sql","java"}

EN

回答 1

Stack Overflow用户

发布于 2019-01-09 12:28:50

使用聚合:

代码语言:javascript
复制
db.userforms.aggregate([
  { $match: { emailId: "nagendra@gmail.com" } },
  { $project: { skillName: { $concatArrays: "$skills.skillName" } } }
])

将返回:

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54109315

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档