有没有办法获取 Mongo Compass 中某个字段的所有不同值?
Is there a way to get all distinct values for a field in Mongo Compass?
我希望能够在 MongoDB Compass 中获取字段或嵌套字段的所有不同值。
这是我在 Compass 中一直使用的一种方式。
如果您进入 Compass 找到您想要的集合并转到聚合选项卡,您可以这样展开和分组:
Select $unwind 然后填写你想要的字段,前缀为$
。如果字段是数组,我通常会忽略 null 和空数组。
{
path: '$displayFirstName',
preserveNullAndEmptyArrays: false
}
然后使用 $group 阶段对值进行分组并将它们添加到集合中:
{
_id: null,
uniqueFirstNames: {
$addToSet: '$displayFirstName'
}
}
唯一的值列表将显示在 $group 阶段的右侧。
如果该值是嵌套的并且您希望将结果展平,只需在最后的 $group 阶段之前为每个级别添加更多 $unwind 阶段。例如,如果您有 user.addresses
这是一个对象数组,并且您希望将所有用户的所有可能地址类型作为扁平化列表,您可以这样做。
$展开
{
path: '$addresses',
preserveNullAndEmptyArrays: false
}
第二个$unwind
{
path: '$addresses.type',
preserveNullAndEmptyArrays: false
}
$组
{
_id: null,
uniqueAddressTypes: {
$addToSet: '$addresses.type'
}
}
我希望能够在 MongoDB Compass 中获取字段或嵌套字段的所有不同值。
这是我在 Compass 中一直使用的一种方式。
如果您进入 Compass 找到您想要的集合并转到聚合选项卡,您可以这样展开和分组:
Select $unwind 然后填写你想要的字段,前缀为$
。如果字段是数组,我通常会忽略 null 和空数组。
{
path: '$displayFirstName',
preserveNullAndEmptyArrays: false
}
然后使用 $group 阶段对值进行分组并将它们添加到集合中:
{
_id: null,
uniqueFirstNames: {
$addToSet: '$displayFirstName'
}
}
唯一的值列表将显示在 $group 阶段的右侧。
如果该值是嵌套的并且您希望将结果展平,只需在最后的 $group 阶段之前为每个级别添加更多 $unwind 阶段。例如,如果您有 user.addresses
这是一个对象数组,并且您希望将所有用户的所有可能地址类型作为扁平化列表,您可以这样做。
$展开
{
path: '$addresses',
preserveNullAndEmptyArrays: false
}
第二个$unwind
{
path: '$addresses.type',
preserveNullAndEmptyArrays: false
}
$组
{
_id: null,
uniqueAddressTypes: {
$addToSet: '$addresses.type'
}
}