首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在mongo中返回多个值

在mongo中返回多个值
EN

Stack Overflow用户
提问于 2020-12-15 16:46:04
回答 1查看 36关注 0票数 0

我的“accounts”集合中有这些文档

代码语言:javascript
复制
{
        "name" : "Customer-1",
        "lines" : [
                {
                        "type" : "BroadBand",
                        "id" : "<MAC-ADDRESS-1>",
                        "status" : "ON"
                },
                {
                        "type" : "handset",
                        "id" : "<MSISDN-1>",
                        "status" : "ON"
                },
                {
                        "type" : "handset",
                        "id" : "34666468709",
                        "status" : "OFF"
                },
                {
                        "type" : "BroadBand",
                        "id" : "<MAC-ADDRESS-2>",
                        "status" : "OFF"
                }
        ]
}

我尝试了查询:

代码语言:javascript
复制
db.accounts.find({$and: [ {"name":"Customer-1"}]},{"_id":0,"lines":{$elemMatch: {"type":"BroadBand"}}}).pretty()

但它只给了我第一个入口,而不是全部。因此,我希望我的输出仅为具有各自元素的boradband类型,如下所示:

代码语言:javascript
复制
                        "type" : "BroadBand",
                        "id" : "<MAC-ADDRESS-1>",
                        "status" : "ON"

                        "type" : "BroadBand",
                        "id" : "<MAC-ADDRESS-2>",
                        "status" : "OFF"
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-15 17:20:16

您可以使用db.collection.aggregate()方法来实现此目的。下面是查询:

代码语言:javascript
复制
db.collection.aggregate([{
"$match": {
  "name": "Customer-1"
}},{
"$unwind": {
  "path": "$lines"
}},{
"$match": {
  "lines.type": "BroadBand"
}}, {
"$group": {
  "_id": "$name",
  "lines": {
    "$push": "$lines"
  }
}},{
"$project": {
  "name": "$_id",
  "lines": 1
}}])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65302598

复制
相关文章

相似问题

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