MongoDB指南针:选择不同的字段值
我使用的是MongoDB指南针,没有Mongo外壳。我需要使用MongoDB Compass工具构建一个查询,从我的集合中选择“流派”字段的不同值 样本输入: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
{"_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
。