MongoDB クエリを作成して、スコア 5 未満のグレードが少なくとも 1 つあり、マンハッタンまたはブルックリンの区に位置し、料理がアメリカ料理ではないレストランを検索します。
「レストラン」コレクションの構造:
{
"address": {
"building": "1007",
"coord": [ -73.856077, 40.848447 ],
"street": "Morris Park Ave",
"zipcode": "10462"
},
"borough": "Bronx",
"cuisine": "Bakery",
"grades": [
{ "date": { "$date": 1393804800000 }, "grade": "A", "score": 2 },
{ "date": { "$date": 1378857600000 }, "grade": "A", "score": 6 },
{ "date": { "$date": 1358985600000 }, "grade": "A", "score": 10 },
{ "date": { "$date": 1322006400000 }, "grade": "A", "score": 9 },
{ "date": { "$date": 1299715200000 }, "grade": "B", "score": 14 }
],
"name": "Morris Park Bake Shop",
"restaurant_id": "30075445"
}
Query
db.restaurants.find({
$and: [
{ $or: [{ borough: "Manhattan" }, { borough: "Brooklyn" }] },
{ "grades.score": { $lt: 5 } },
{ cuisine: { $ne: "American" } }
]
})
説明
上記の MongoDB クエリは、マンハッタンまたはブルックリンにある、いずれかのグレードで 5 未満のスコアを獲得し、アメリカ料理ではない料理を提供するレストランからのすべてのドキュメントを返します。
$and 演算子は、複数の条件を 1 つのクエリに結合します。
$or 演算子は、「マンハッタン」または「ブルックリン」に等しい区フィールドを持つドキュメントに一致します。
$and 演算子は、score フィールドが 5 未満である Grade 配列に少なくとも 1 つの要素を持つドキュメントに一致し、$and 演算子は料理フィールドが「American」に等しくないドキュメントに一致します。
$ne 演算子は、3 番目の条件に「等しくない」を指定します。
Previous:マンハッタンまたはブルックリンで、少なくとも 1 つのグレードが 5 未満であるレストランを探す
Next:マンハッタンまたはブルックリンで、料理がアメリカ料理でも中華料理でもない、グレードが 5 つより 1 つ以上低いレストランを探す
コメント