首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MongDB:从嵌套文档中提取动态密钥和值对的查询

MongDB:从嵌套文档中提取动态密钥和值对的查询
EN

Stack Overflow用户
提问于 2020-07-04 16:14:02
回答 1查看 528关注 0票数 0

以下是我的数据结构,我需要提取“发布者”动态键,并将($lookup)与另一个用于匹配记录的集合进行比较,对%值进行求和。

代码语言:javascript
复制
 "_id" : ObjectId("5eff1e9a9bb60729d3278140"),
    "tracks" : [ 
        {
            "_id" : ObjectId("5efd9548327f5509b009b5a9"),
            "artist" : ["abc"],
            "genre" : "Pop",
            "publishers" : {
                "a" : "30.00%",
                "b" : "30.00%",
                "c" : "30.00%",
                "d" : "10.00%"
            },
            "__v" : 0
        }
  1. 数据结构有效吗?
  2. 我试图把它转换成$ObjectToArray,但是不能转换嵌套的文档,有什么建议吗?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-04 18:54:24

您可以使用此聚合管道。它将发布数组中的动态键转换为以下形式的对象,然后可以轻松地应用$lookup阶段。

代码语言:javascript
复制
  {
    "_id": ObjectId("5eff1e9a9bb60729d3278140"),
    "percentage": 30,
    "publisher": "b"
  }
代码语言:javascript
复制
db.collection.aggregate([
  {
    $unwind: "$tracks"
  },
  {
    $project: {
      publisher: {
        $objectToArray: "$tracks.publishers"
      }
    }
  },
  {
    $unwind: "$publisher"
  },
  {
    $project: {
      publisher: "$publisher.k",
      percentage: {
        $convert: {
          input: {
            $trim: {
              input: "$publisher.v",
              chars: "%"
            }
          },
          to: "double"
        }
      }
    }
  }
])

MongoDB游乐场快递。-1

更新的例子

MongoDB游乐场快递。-2

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

https://stackoverflow.com/questions/62731486

复制
相关文章

相似问题

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