我有以下多个文件:
{
"IMDBURL":"http:\/\/us.imdb.com\/M\/title- exact?Schrei%20aus%20Stein%20(1991)",
"release_date":"08-Mar-1996",
"ratings":[{"user_id":916,"rating":3,"timestamp":"880845755"}],
"genre":["Drama","Thriller"],
"video":"","title":"Scream of Stone (Schrei aus Stein) (1991)"
}
我试图用它们所属的类型数来显示电影的标题。
到目前为止,我正在做这个
db.bigdata.aggregate(
{$unwind:"$genre"},
{$group: {_id:"$title",genres: {$sum:"$genre"}}}
)
我收到此回复
{"_id" : "Sunchaser, The (1996)", "genres" : 0 }
{ "_id" : "Kika (1993)", "genres" : 0 }
有人可以告诉我我做错了吗?
答案 0 :(得分:2)
来自mongodb $sum文档:
{ $sum : <field> } Numeric Sum of Values
{ $sum : <field> } Numeric and Non-Numeric Sum of Numeric Values
{ $sum : <field> } Non-Numeric or Non-Existent 0
如您所见,第三种情况明确指出 - 非数字字段的总和将为您提供0
作为结果。如果您想要收集所有类型的集合,那么您应该使用$addToSet。如果你想获得类型的计数,你应该使用
{$group: {_id:"$title", genres: {$sum:1}}}
并且没有必要为此放松和分组(除非你有重复的类型) - 简单的$ size在投影操作符中也会这样做。