1

さまざまな食品の配列を持つmongo dbレストランコレクションがあり、各レストランの「サンドイッチ」と「ハンバーガー」の価格を平均化したい、つまりステーキを含めないようにしたいとしましょう。この状況で 3 つのタイプのうち 2 つを一致させるにはどうすればよいでしょうか。つまり、ステーキを除外するにはどうすればよいでしょうか?

たとえば、match 演算子の場合、(既に配列をアンワインドしたと仮定して) 次のようなことができます。

{ $match : { foods : "burger" } }

しかし、私はこのようなことをもっとやりたいです(ステーキを除外します)

   { $match : { foods : ["burger", "sandwich" ]} }

コードが機能しないことを除いて。

説明できますか?

"_id" : ObjectId("50b59cd75bed76f46522c34e"),
"restaurant_id" : 0,
"foods" : [

    {
        "type" : "sandwich",
        "price" : 6.99
    },
    {
        "type" : "burger",
        "price" : 5.99
    },
    {
        "type" : "steak"
        "price" : 9.99
    }
]
4

2 に答える 2

1

JohnyHK の答えは正しく簡潔です。

「説明してもらえますか?」一部、次のように一致を指定した場合:

{ $match : { 食べ物 : ["ハンバーガー", "サンドイッチ" ]} }

ドキュメントには、要素として「ハンバーガー」と「サンドイッチ」を含む配列を含むフィールド「foods」が必要です。これは等しい比較です。

演算子 $in は $match で直接説明されていません。ここを参照してください: http://docs.mongodb.org/manual/reference/aggregation/match/

$in はクエリ演算子であるため、ここで説明されています ($match からリンクされています): http://docs.mongodb.org/manual/tutorial/query-documents/#read-operations-query-argument

于 2013-09-15T00:30:31.457 に答える