MongoDB Compass:选择不同的字段值

jav*_*net 14 mongodb mongodb-compass

我正在使用 MongoDB Compass 并且没有 Mongo Shell。我需要使用 MongoDB Compass 工具构建一个查询,以从我的集合中选择“流派”字段的不同值。

指南针工具截图

样本输入:

{"_id":{"$oid":"58c59c6a99d4ee0af9e0c34e"},"title":"Bateau-mouche sur la Seine","year":{"$numberInt":"1896"},"imdbId":"tt0000042","genre":["Documentary”,”Short”],"viewerRating":{"$numberDouble":"3.8"},"viewerVotes":{"$numberInt":"17"},"director":"Georges Mlis"}
{"_id":{"$oid":"58c59c6a99d4ee0af9e0c340"},"title":"Watering the Flowers","year":{"$numberInt":"1896"},"imdbId":"tt0000035","genre":["Short”],"viewerRating":{"$numberDouble":"5.3"},"viewerVotes":{"$numberInt":"33"},"director":"Georges M?li?s"}
{"_id":{"$oid":"58c59c6a99d4ee0af9e0c34a"},"title":"The Boxing Kangaroo","year":{"$numberInt":"1896"},"imdbId":"tt0000048","genre":["Short”],"viewerRating":{"$numberDouble":"5.2"},"viewerVotes":{"$numberInt":"48"},"director":"Birt Acres"}
Run Code Online (Sandbox Code Playgroud)

预期输出:纪录片,短片

chr*_*ian 36

您可以通过 Compass 中的聚合框架使用$unwind$group来完成此操作。执行 $unwind 为目标数组中的每个元素创建一个唯一的文档,这使得$group 阶段中的$addToSet运算符能够将流派捕获为不同的元素。

管道:

[
  {
    $unwind: {
      path: '$genre',
      preserveNullAndEmptyArrays: true
    }
  },
  {
    $group: {
      _id: null,
      uniqueGenres: { $addToSet: '$genre' }
    }
  }
]
Run Code Online (Sandbox Code Playgroud)

有关指南针示例,请参见下面的屏幕截图:

在此处输入图片说明

  • 这应该是公认的答案,而不是您自己的轻微修改。 (4认同)