首页 > 解决方案 > mongoexport/projection:仅导出不等于 null 的字段

问题描述

我在 mongo 中有这样的 JSON 文档:

{
  "A": null, 
  "B": { 
    "B1": "B1Data",
    "B2": "B2Data"
  },
},
{
  "A": { 
    "A1": "A1Data",
    "A2": "A2Data"
  }, 
  "B": null,
}

我想要一个可读且可比较的 JSON 导出,它省略了这样的顶级空字段:

{
  "B": { 
    "B1": "B1Data",
    "B2": "B2Data"
  },
},
{
  "A": { 
    "A1": "A1Data",
    "A2": "A2Data"
  }
}

现在我正在使用mongoexport. 但--queryoption 仅限制要导出的文档,而--fieldsoption 仅包含字段。我需要一个--fields带有条件的选项$ne:null

我看到的唯一解决方法是创建一个副本(或视图),其中包含使用 with 的非空字段的所有文档到另一个集合并导出该集合。我试图创建这样一个,但我认为在文档中隐藏单个字段是不可能的。如果我错了并且有可能我会很感激帮助,因为这两种解决方法都不起作用。findprojectionfindprojection

背景信息:我在这样的文档中有大约 40 个字段(并且还在增长),这些字段可能是not-existentnullobject。原因是 POCO 在 C# 中的定义增长了。早期存储的文档缺少字段,后来存储的文档没有。如果稍后修改了早期文档,则会将缺失的字段添加为 null。我正在使用 JSON 导出将我的数据保存在 git 或 SVN 等版本控制系统中,以便能够跟踪数据修改。由于C# POCO 中不存在的字段和值为null的字段是相同的,因此我更喜欢在 mongoexport 结果中排除它们,以便更好地了解真实数据和更改。

谢谢

标签: c#mongodbprojectionmongoexport

解决方案


推荐阅读