Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MongoDB指南针:选择不同的字段值_Mongodb_Mongodb Compass - Fatal编程技术网

MongoDB指南针:选择不同的字段值

MongoDB指南针:选择不同的字段值,mongodb,mongodb-compass,Mongodb,Mongodb Compass,我使用的是MongoDB指南针,没有Mongo外壳。我需要使用MongoDB Compass工具构建一个查询,从我的集合中选择“流派”字段的不同值 样本输入: {"_id":{"$oid":"58c59c6a99d4ee0af9e0c34e"},"title":"Bateau-mouche sur la Seine","year":{"$numberInt":"1896"},"imdbId":"tt0000042","genre":["Documentary”,”Short”],"viewer

我使用的是MongoDB指南针,没有Mongo外壳。我需要使用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"}

预期输出:纪录片,简称

您可以通过Compass中的聚合框架,使用和来完成此操作。执行$unwind是为了为目标数组中的每个元素创建一个唯一的文档,这使$group阶段中的操作员能够捕获不同类型的元素

管道:

[
{
$REWIND:{
路径:“$GREEP”,
preserveNullAndEmptyArrays:true
}
},
{
$group:{
_id:null,
唯一类型:{$addToSet:'$genre'}
}
}
]
有关指南针示例,请参见下面的屏幕截图:


谢谢你的回答,克里斯蒂安。我根据你的建议得出了以下答案

我的管道:

[{$project: {
  genres: {$split: ["$genre",", "  ]}

}
}, {$unwind: {
  path: "$genres",
  includeArrayIndex: 'string',
  preserveNullAndEmptyArrays: true

  }}, {$group: {
  _id: null,
  unique_genres: {
    $addToSet: '$genres'
  }
}}]

“…没有MongoShell”,MongoDB安装包括MongoShell程序。另外,请发布一份示例文档的文本(您可以从Compass复制)。感谢Prasad的回复。我只安装了MongoDB Compass并连接到MongoDB Atlas集群。我知道如何在MongoShell中创建查询以选择不同的字段。只是好奇地想知道,如何实现与指南针工具一样,我将经常使用它。将附加一些测试文档。您可以使用分组创建聚合查询,以获得计数、总和、平均值等。另外,请参阅和。谢谢您的回答。简单地问一下如何将“Short,documental”转换为数组,pl建议在上面的输出中,“Short”,“documental”是返回的单个文档中
distinctGenres
字段中的数组。如果希望最终输出只是一个数组,那么可以在服务器端代码中这样做。i、 e.
javascript常量管道=[{$unwind:{path:'$genre',preserveNullandmptyarray:true},{$group:{{u id:null,uniqueGenres:{$addToSet:'$genre'}}}];const[{distinctGenres}]=wait db.getCollection('docs').aggregate(pipeline.toArray()谢谢你的建议。我已经根据您的输入创建了我的管道,请检查并建议我是否遗漏了任何内容。这应该是可接受的答案,而不是您自己的轻微修改。啊,好的。刚在开始时添加了
$project