mongodb - 查询多值数组以检索 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
.
解决方案
我正在考虑您在一个名称下没有重复的技术。您只能投影技术名称然后映射:
db.getCollection('myCollection')
.find({ name: 'Sam' }, { 'technology.technologyName': 1 })
.map(function(doc) { return doc['technology.technologyName'] })
推荐阅读
- javascript - 为什么 bootstrap-multiselect 会关闭下拉菜单?
- android - 为什么在子类化时将参数传递给 FragmentStateAdapter?
- python - 如何使用 asyncio.gather 同时重复/执行协程?
- c - 当我运行我的代码两次(在 While/DoWhile 之后)时,scanf 无法按预期工作。(我使用 Visual C++ Windows 控制台应用程序)
- reactjs - Create-react-app 构建文件波浪号 ~ 字符
- c# - 欧拉旋转问题
- ruby-on-rails - 缺少 psych(用于 YAML 输出),同时将 db 合并到 heroku
- android - 应在 Firebase 数据库中更新 Recycler 视图中的编辑文本值
- html - 降低背景图像亮度而不影响其内容
- python - 如何计算误报率(FPR)和误报率百分比?