Mongodb 有没有办法在Mongo Compass中获取字段的所有不同值?

Mongodb 有没有办法在Mongo Compass中获取字段的所有不同值?,mongodb,mongodb-compass,Mongodb,Mongodb Compass,我希望能够在MongoDB Compass中获得字段或嵌套字段的所有不同值 这是我在指南针中使用的一种方法 如果进入Compass以找到所需的集合并进入“聚合”选项卡,则可以按如下方式展开和分组: 选择$unwind,然后填写所需字段,前缀为$。如果字段是数组,我通常会忽略null和空数组 { path: '$displayFirstName', preserveNullAndEmptyArrays: false } 然后使用$group阶段对值进行分组并将其添加到集合中: { _

我希望能够在MongoDB Compass中获得字段或嵌套字段的所有不同值

这是我在指南针中使用的一种方法

如果进入Compass以找到所需的集合并进入“聚合”选项卡,则可以按如下方式展开和分组:

选择$unwind,然后填写所需字段,前缀为
$
。如果字段是数组,我通常会忽略null和空数组

{
  path: '$displayFirstName',
  preserveNullAndEmptyArrays: false
}
然后使用$group阶段对值进行分组并将其添加到集合中:

{
  _id: null,
  uniqueFirstNames: {
    $addToSet: '$displayFirstName'
  }
}
唯一的值列表将显示在$group阶段的右侧

如果该值是嵌套的,并且您希望展平结果,只需在最后一个$group阶段之前为每个级别添加更多$unwind阶段。例如,如果您有
user.addresses
,这是一个对象数组,并且您希望将所有用户的所有可能地址类型作为一个扁平列表,那么您可以这样做

$REWIND

{
  path: '$addresses',
  preserveNullAndEmptyArrays: false
}
第二次$REWIND

{
  path: '$addresses.type',
  preserveNullAndEmptyArrays: false
}
$组

{
  _id: null,
  uniqueAddressTypes: {
    $addToSet: '$addresses.type'
  }
}

MongoDB Compass GUI呢?它允许您执行任意查询吗?Compass UI的文档非常少。说指南针可以做你描述的事情,但没有解释怎么做。想必,他们是通过玩UI来解决的。不是真的。据我所知,您可以执行find()和聚合。我发现这个问题是关于如何通过聚合找到不同的值,这对我来说很有用。如果您单击Schema选项卡,Mongo Compass会立即显示唯一的值,但前提是这些值在总值中所占的百分比相对较大,因此看起来并不详尽。你发布的文章提醒我,你可以看到不同的价值观。谢谢你的帮助!在仔细考虑之后,使用CLI可以更好地完成此任务。感谢您在Mongo文档中为我指出distinct。我已经搜索了很长时间了。这就是发布解决方案的原因。