MongoDB获得SubDocument

 小新亚笔 发布于 2023-02-03 01:13

我想从MongoDB中的文档中检索子文档.我有以下文件:

{
    "_id" : "10000",
    "password" : "password1",
    "name" : "customer1",
    "enabled" : true,
    "channels" : [ 
        {
            "id" : "10000-1",
            "name" : "cust1chan1",
            "enabled" : true
        }, 
        {
            "id" : "10000-2",
            "name" : "cust1chan2",
            "enabled" : true
        }
    ]
}

我想要的结果是:

{
    "id" : "10000-1",
    "name" : "cust1chan1",
    "enabled" : true
}

但是,到目前为止我能做的最好的事情是使用以下查询:

db.customer.find({"channels.id" : "10000-1"}, {"channels.$" : 1, "_id" : 0})

但这给了我以下结果:

{
    "channels" : [ 
        {
            "id" : "10000-1",
            "name" : "cust1chan1",
            "enabled" : true
        }
    ]
}

有谁知道是否可以编写一个能给我想要的结果的查询?任何帮助将非常感激.

1 个回答
  • 您可以使用聚合框架来完成它.查询将是这样的:

    db.customer.aggregate([
        {$unwind : "$channels"},
        {$match : {"channels.id" : "10000-1"}},
        {$project : {_id : 0, 
                     id : "$channels.id", 
                     name : "$channels.name", 
                     enabled : "$channels.enabled"}}
    ])
    

    2023-02-03 01:31 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有