【问题标题】:How to list the outer-most fields of a large document usign PyMongo?如何使用 PyMongo 列出大文档的最外层字段?
【发布时间】:2021-12-22 17:38:13
【问题描述】:

我只是很难理解这一点,当我处理大量文本数据集时,如何列出最外层的字段?我正在尝试在 Mongodb 和 pymongo 中实现它?有什么建议吗?

【问题讨论】:

  • 你能举个例子,有一些样本数据和预期的输出吗?
  • 所以我实际上在 Json 文件中有一些 covid-19 数据。我通过 pymongo 导入的数据似乎是大量数据,所以当我在 if 语句中执行“insert_many”和“insert_one”时,它给了我一些错误,但它显示了具有“-id”的输出,并且有 8/9 属性可用的。所以我试图列出它的最外层但没能做到。所以我想知道是否有任何建议。
  • 类似的东西,知道如​​何根据其外部字段列出它{"_id":"868998797","id":"8567474","infons":{},"段落":[{"infons":{"license":"这篇文章(abc)","name_1":"surname: xyz;given-names:abc","section_type":"TITLE","article-id_pmid":"33647988"," name_0":"surname:xyss;given-names:aaa","year":"2000","article-id_pmc":"353543","article-id_publisher-id":"aba32","kwd":" COVID-19 SARS-CoV-2 C"...
  • 如果可以的话更新问题:) 添加所有额外的细节,在代码块中添加 JSON 以便我们阅读。
  • 这里不能分享图片,但是关键属性有:“_id”、“id”、“info”、“pass”、“pid”、“pcid”、“jrn”、“ yr", "aut" .....这些是可用的属性,我在 Pymongo 中尝试执行的查询是:“列出文档语料库的最外层字段”;我不确定我需要使用 python 列出的最外层字段是什么,对此有任何帮助,不知道如何在 python 上执行此操作

标签: python mongodb pymongo data-mining text-mining


【解决方案1】:

我不确定您需要什么,但也许下面的方法可以提供帮助。

查询

  • 此查询返回一个包含所有外部字段名称的数组
  • objectToArray 将 ROOT 文档转换为数组
  • 获取字段名的第一个成员

Test code here

aggregate(
[{"$project": 
    {"_id": 0,
      "outer-fields": 
      {"$map": 
        {"input": 
          {"$map": 
            {"input": {"$objectToArray": "$$ROOT"},
              "in": ["$$m.k", "$$m.v"],
              "as": "m"}},
          "in": {"$arrayElemAt": ["$$this", 0]}}}}}])

【讨论】:

  • 非常感谢,非常感谢您的帮助,到时我会努力解决的。另一件事,我正在考虑将最后一个属性视为最外层的字段,因为它是一个区域并且内部有一些其他嵌套循环,所以我可能需要将它们全部打印出来才能看到,或者在 pymongo 中有一种东方方式可以做到这一点,现在想弄清楚。
  • 如果您可以使用该嵌套数组创建一个新问题,发布您的示例数据和预期输出,以便人们可以编写查询来获取这些嵌套值。
猜你喜欢
  • 2020-04-10
  • 2013-01-04
  • 2023-01-23
  • 1970-01-01
  • 2023-04-05
  • 2019-10-19
  • 2021-12-14
  • 2022-11-17
  • 2020-11-21
相关资源
最近更新 更多