MongoDB クエリを作成して、スコア 2 とスコア 6 を持ち、マンハッタンまたはブルックリンの区に位置し、料理がアメリカ料理でも中華料理でもないレストランを検索します。
「レストラン」コレクションの構造:
{
"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: [
{ borough: { $in: ["Manhattan", "Brooklyn"] } },
{ cuisine: { $nin: ["American", "Chinese"] } },
{ grades: { $elemMatch: { score: 2 } } },
{ grades: { $elemMatch: { score: 6 } } }
]
})
説明
MongoDB の上記のクエリは、スコア 2 とスコア 6 のレストランを検索し、マンハッタンまたはブルックリンの区に位置し、料理がアメリカ料理でも中華料理でもないものを検索します。
$and 演算子は、配列内の満たす必要があるすべての条件を結合するために使用されます。
$in 演算子は、区フィールドの値が「マンハッタン」または「ブルックリン」であるかどうかを確認します。
$nin 演算子は、料理フィールドの値が「アメリカ料理」または「中華料理」でないかどうかをチェックします。
$elemMatch 演算子は、成績配列内にスコアが 2 に等しい要素が少なくとも 1 つ存在するかどうか、およびスコアが 6 に等しい他の要素が成績配列内に存在するかどうかをチェックします。
コメント