首页 > 解决方案 > 查询多值数组以检索 mongodb 中的特定值

问题描述

我的文档数据库中有一个带有多个参数的数组元素。这就是单个文档的样子。我可以根据唯一的名称进行搜索。有没有办法列出与名称相关的所有技术。

"name" : "Sam",
"date" : ISODate("2020-02-05T06:34:28.453Z"),
"technology" : [ 
    {
        "technologyId" : "1",
        "technologyName" : "tech1"
    }, 
    {
        "technologyId" : "2",
        "technologyName" : "tech2"
    }, 
    {
        "technologyId" : "3",
        "technologyName" : "tech3"
    }, 
    {
        "technologyId" : "4",
        "technologyName" : "tech4"
    }
],
"sector" : [ 
    {
        "sectorId" : "1",
        "sectorName" : "sector1"
    }, 
    {
        "sectorId" : "2",
        "sectorName" : "sector2"
    }, 
    {
        "sectorId" : "3",
        "sectorName" : "sector3"
    }, 
    {
        "sectorId" : "4",
        "sectorName" : "sector4"
    }
]

这是我的简单查询

db.getCollection('myCollection').find({'name':'Sam'})

有没有办法在单个查询中检索名称的所有技术。

我的输出应该只有tech1,tech2,tech3,tech4.

标签: mongodbmongodb-queryazure-cosmosdb-mongoapi

解决方案


我正在考虑您在一个名称下没有重复的技术。您只能投影技术名称然后映射:

db.getCollection('myCollection')
.find({ name: 'Sam' }, { 'technology.technologyName': 1 })
.map(function(doc) { return doc['technology.technologyName'] })

推荐阅读