第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

從 MongoDB 中的嵌套數(shù)組中查找公共屬性

從 MongoDB 中的嵌套數(shù)組中查找公共屬性

肥皂起泡泡 2023-07-06 17:32:16
下面是我的架構(gòu):  [{    "attributes":[        {            "attrId":"123",            "values":[                    {"name": "asd"},                    {"name": "bcc"}                ]        },        {            "attrId":"456",            "values":[                    {"name": "zzz"},                    {"name": "bcc"}                ]        }        ]},{    "attributes":[        {            "attrId":"123",            "values":[                    {"name": "asd"},                    {"name": "bcc"}                ]        },        {            "attrId":"456",            "values":[                    {"name": "kkk"},                    {"name": "bcc"}                ]        }        ]}]我想要輸出為:[{123:["asd","ccc"]}]即,attrId如果所有值與所有其他文檔匹配,則返回值,我認(rèn)為它將值轉(zhuǎn)換為像“asdbcc”這樣的字符串,以便于比較。
查看完整描述

1 回答

?
Smart貓小萌

TA貢獻(xiàn)1911條經(jīng)驗(yàn) 獲得超7個(gè)贊

你可以試試,

  • $groupby null 并創(chuàng)建根對(duì)象數(shù)組并獲取根中對(duì)象的總數(shù)

  • $unwind解構(gòu)root我們?cè)谏厦骐A段創(chuàng)建的數(shù)組

  • $unwind解構(gòu)root.attributes數(shù)組

  • $group通過(guò)root.attributes.attrId和獲取分組文檔和值的總數(shù),以使用對(duì)象中的值數(shù)組形式root.attributes.values獲取 k(key)attrId和 v(value)并獲取第一個(gè)字段values$maptotalCount

  • $match使用$expr檢查公共文檔計(jì)數(shù)和總根對(duì)象文檔的表達(dá)式都相等,然后返回匹配的文檔

  • $replaceRoot$arraToObject從ofvalues數(shù)組轉(zhuǎn)換后替換 and 對(duì)象

db.collection.aggregate([

  {

    $group: {

      _id: null,

      root: { $push: "$$ROOT" },

      totalCount: { $sum: 1 }

    }

  },

  { $unwind: "$root" },

  { $unwind: "$root.attributes" },

  {

    $group: {

      _id: {

        attrId: "$root.attributes.attrId",

        values: "$root.attributes.values"

      },

      values: {

        $addToSet: {

          k: "$root.attributes.attrId",

          v: {

            $map: {

              input: "$root.attributes.values",

              in: "$$this.name"

            }

          }

        }

      },

      count: { $sum: 1 },

      totalCount: { $first: "$totalCount" }

    }

  },

  { $match: { $expr: { $eq: ["$count", "$totalCount"] } } },

  { $replaceRoot: { newRoot: { $arrayToObject: "$values" } } }

])


查看完整回答
反對(duì) 回復(fù) 2023-07-06
  • 1 回答
  • 0 關(guān)注
  • 157 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)