0

私は、年齢に応じて何人の人が映画を見たかを含む映画のコレクションを持っています。例は次のとおりです。

{
   name : "Return of Jedi",
   kids : 5,
   adults : 10,
   seniors : 3
}

これは、「ジェダイの帰還」が5人の子供、10人の大人、3人の高齢者に見られたことを意味します。

ランキングに基づいたおすすめの映画を返す必要があります。ランキングは、検索に一致するその映画の視聴者の合計として計算されます。たとえば、子供と大人の家族がいる場合、ジェダイの帰還のランクは13(#kids + #adults)になります。

MongoDBは計算された式でソートできますか?どのように?そうでない場合、代替手段はありますか?

計算フィールドを追加し、それによって順序付けすることにより、集約フレームワークを使用してこれを解決することを考えました。しかし、これはリソースを消費しすぎるのではないでしょうか。

4

1 に答える 1

0

$ projectを使用してから、$addを使用する必要があります。

何かのようなもの:

db.movies.aggregate({ $project: 
{ 
      movieName: "$name", 
      totalAudience: { $add : ["$kids","$adults","$seniors"]}
},
{ $sort : { totalAudience: -1 }}
);

総視聴者の説明順に並べられたすべての映画を提供します。

于 2013-02-24T16:37:51.367 に答える