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"}
]
},
{
$nor: [
{cuisine: "American"},
{cuisine: "Chinese"}
]
},
{
grades: {
$elemMatch: {
score: { $lt: 5 }
}
}
}
]
})
説明
MongoDB の上記のクエリは、マンハッタンまたはブルックリンに位置し、料理がアメリカ料理でも中華料理でもない、スコアが 5 未満の少なくとも 1 つのグレードを持つレストランを検索します。
ドキュメントが返されるには、$and 演算子の後の角括弧で囲まれたこの条件が満たされる必要があります。
$or 演算子は、レストランがマンハッタン区またはブルックリン区のいずれかに位置する必要があることを指定しました。
$nor 演算子は、レストランの料理がアメリカ料理または中華料理ではないことを指定しました。
$elemMatch 演算子は、レストランには 5 未満のスコアのグレードが少なくとも 1 つある必要があると指定しました。
Previous:アメリカ料理ではなく、最低グレードが 1 つ以上あるレストランはマンハッタンまたはブルックリンにあります
Next:グレード2とグレード6のレストランを探す
コメント