有没有一种方法可以获取Mongo Compass中某个字段的所有不同值?

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

dosoo 回答:有没有一种方法可以获取Mongo Compass中某个字段的所有不同值?

这是我在指南针中一直使用的一种方式。

如果您将Compass转到所需的集合并转到“聚合”选项卡,则可以这样展开和分组:

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

{
  path: '$displayFirstName',preserveNullAndEmptyArrays: false
}

然后使用$ group阶段对值进行分组并将其添加到集合中:

{
  _id: null,uniqueFirstNames: {
    $addToSet: '$displayFirstName'
  }
}

唯一值列表将显示在$ group阶段的右侧。

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

$ unwind

{
  path: '$addresses',preserveNullAndEmptyArrays: false
}

第二个$ unwind

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

$ group

{
  _id: null,uniqueAddressTypes: {
    $addToSet: '$addresses.type'
  }
}
本文链接:https://www.f2er.com/3055384.html

大家都在问