首页 > 解决方案 > 如何在没有 subdocumnet 字段的情况下获取子子文档?

问题描述

我在使用命令 find 时遇到问题,我有一个字段 campocr,其中有很多子文档,例如:106719747_112240747078637_2436802243143511917_n 然后我有像 textoextraido1 这样的子子文档。

/* 1 */
{
    "_id" : "CCZTn4lHmIh",
    "campocr" : {
        "106719747_112240747078637_2436802243143511917_n" : {
            "textoextraido1" : "Canais investigados pelo STF\nTe atualizei\nDr Marcelo Frazão*\nTerça Livre TV\nm\n=\nN\ncs\n=>\n=\nSN\nCarla Zambelli\nOswaldo Eustáquio\nFoco do Brasil\nBernardo P Kúuster\no\n?\n7\n6\no\no\n<\n&\n+ + +\nRADAR)» AF\n",
            "textoextraido2" : "Canais investigados pelo STF\nTe atualizei\nDr Marcelo Frazão*\n= 7\nR Ss\nPR o\ns E\n-\nx\no\n.\n|\n-\no\nCarla Zambelli\nOswaldo Eustáquio\nFoco do Brasil\nBernardo P Kúuster\no\n?\n7\nsã\no\no\n<\n&\nKR + +\nRADAR)» AF\n",
            "textoextraido3" : "Canais investigados pelo STF\nTe atualizei\nDr Marcelo Frazão*\nTerça Livre TV\nEnzuh\nCarla Zambelli\nOswaldo Fustáquic\nFoco do Brasil\nBernardo P Kuster\nRADAR\nAF\n",
            "opcao" : 2,
            "gabarito" : "Canais investigados pelo STF\nTe atualizei\nDr Marcelo Frazão*\nTerça Livre TV\nEnzuh\nCarla Zambelli\nOswaldo Eustáquio\nFoco do Brasil\nBernardo P Kuster\nRADAR AF\n"
        },
        "106734782_181302733405757_4000795843436713477_n" : {
            "textoextraido1" : "Os canais que mais transitam em grupos\nbolsonaristas\nNE Investigados pelo STF\nTerça Livre TV\nrá\nPAPO CONSERVADOR com GUSTAVO GAYER\nDr Marcelo Frazão\nTe atualizei\nNossa Rede Brasil\n34\nRADAR)» AF\n",
            "textoextraido2" : "Os canais que mais transitam em grupos\nbolsonaristas\nNE Investigados pelo STF\nTerça Livre TV\nE\nN\nPAPO CONSERVADOR com GUSTAVO GAYER\nDr Marcelo Frazão\nTe atualizei\nNossa Rede Brasil\nRADAR)» AF\n",
            "textoextraido3" : "Os canais que mais transitam em grupos\nbolsonaristas\nE Investigados pelo STF\nTerça Livre TV\nré\nPAPO CONSERVADOR com GUSTAVO GAYER\nDr Marcelo Frazão\nTe atualize\"\nNossa Rede Brasil\nRADAR AF\n",
            "opcao" : 1,
            "gabarito" : "Os canais que mais transitam em grupos\nbolsonaristas\nInvestigados pelo STF\nTerça Livre TV\nPAPO CONSERVADOR com GUSTAVO GAYER\nDr Marcelo Frazão\nTe atualizei\nNossa Rede Brasil\nRADAR AF\n"
        },
        "106912608_4765797586779104_6329178112583690206_n" : {
            "textoextraido1" : "Desinformação do WhatsApp ao\nYouTube\nMN Vídeos que citam a China\nExpropriação na Argentina\nPolítica brasileira\nCoronavírus\nRADAR)» AF\n",
            "textoextraido2" : "Desinformação do WhatsApp ao\nYouTube\nMN Vídeos que citam a China\nExpropriação na Argentina\nPolítica brasileira\nCoronavírus\nRADAR)» AF\n",
            "textoextraido3" : "Desinformação do WhatsApp ao\nYouTube\nMN Vídeos que citam a China\nExpropriação na Argentina\nPolítica brasileira\nCoronavírus\nRADAR AF\n",
            "opcao" : 1,
            "gabarito" : "Desinformação do WhatsApp ao\nYouTube\nVídeos que citam a China\nExpropriação na Argentina\nPolítica brasileira\nCoronavírus\nRADAR AF\n"
        },
        "106626782_204495654206351_4462181095498446162_n" : {
            "textoextraido1" : "Os temas mais abordados nos vídeos\ncriticas à imprensa\nminimizações da pandemia\ncríticas a governador(es)\ncríticas ao inquérito das fake naws\ncríticas ao STF\no vV bd o %\n%\n<\n&\n&\ns\no\nRADAR)» AF\n",
            "textoextraido2" : "Os temas mais abordados nos videos\ncriticas à imprensa\nminimizações da pandemia\ncríticas a governador(es)\ncríticas ao inquérito das fake news\ncríticas ao STF\no\n?\nvs\n6\nE\no\n<\nf&\n“\ne\nw\nRADAR)» AF\n",
            "textoextraido3" : "Os temas mais abordados nos videos\ncriticas à imprensa\nminimizações da pandemia\ncríticas a governador(es)\ncríticas ao inquérito das fake naws\ncríticas ao STF\nRADAR AF\n",
            "opcao" : 1,
            "gabarito" : "Os temas mais abordados nos vídeos\ncriticas à imprensa\nminimizações da pandemia\ncríticas a governador(es)\ncríticas ao inquérito das fake news\ncríticas ao STF\nRADAR AF\n"
        }
    },
    "fonte" : "aosfatos"
}

我想投射类似的东西:

db.mycollection.find({},{'campocr.$.textoextraido1'})

并将返回:

"106719747_112240747078637_2436802243143511917_n" : {
            "textoextraido1" : "Canais investigados pelo STF\nTe atualizei\nDr Marcelo Frazão*\nTerça Livre TV\nm\n=\nN\ncs\n=>\n=\nSN\nCarla Zambelli\nOswaldo Eustáquio\nFoco do Brasil\nBernardo P Kúuster\no\n?\n7\n6\no\no\n<\n&\n+ + +\nRADAR)» AF\n"
             },
        "106734782_181302733405757_4000795843436713477_n" : {
            "textoextraido1" : "Os canais que mais transitam em grupos\nbolsonaristas\nNE Investigados pelo STF\nTerça Livre TV\nrá\nPAPO CONSERVADOR com GUSTAVO GAYER\nDr Marcelo Frazão\nTe atualizei\nNossa Rede Brasil\n34\nRADAR)» AF\n"
        },
        "106912608_4765797586779104_6329178112583690206_n" : {
            "textoextraido1" : "Desinformação do WhatsApp ao\nYouTube\nMN Vídeos que citam a China\nExpropriação na Argentina\nPolítica brasileira\nCoronavírus\nRADAR)» AF\n"
        },
        "106626782_204495654206351_4462181095498446162_n" : {
            "textoextraido1" : "Os temas mais abordados nos vídeos\ncriticas à imprensa\nminimizações da pandemia\ncríticas a governador(es)\ncríticas ao inquérito das fake naws\ncríticas ao STF\no vV bd o %\n%\n<\n&\n&\ns\no\nRADAR)» AF\n"
        }

标签: mongodbmongodb-querypymongo

解决方案


k此解决方案将文档转换为包含和元素的数组,v允许您使用 投影所需的字段v.field,然后将数组转换回对象。

[
  {
    "$project": {
      "campocr": {
        "$objectToArray": "$campocr"
      }
    }
  },
  {
    "$project": {
      "campocr.k": 1,
      "campocr.v.textoextraido1": 1
    }
  },
  {
    "$project": {
      "campocr": {
        "$arrayToObject": "$campocr"
      }
    }
  }
]

与您的示例一起使用的演示: https ://mongoplayground.net/p/1-j8VLtC1iZ


推荐阅读