MongoDB クエリを作成して、郵便番号が「10」で始まるレストランの名前と住所を検索します。
「レストラン」コレクションの構造:
{
"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.aggregate([
{
$unwind: "$address"
},
{
$match: {
"address.zipcode": /^10/
}
},
{
$project: {
name: 1,
"address.street": 1,
"address.zipcode": 1,
_id: 0
}
}
])
Output
{
address: { street: 'West 57 Street', zipcode: '10019' },
name: 'Dj Reynolds Pub And Restaurant'
},
{
address: { street: 'Victory Boulevard', zipcode: '10314' },
name: 'Kosher Island'
},
{
address: { street: 'East 66 Street', zipcode: '10065' },
name: '1 East 66Th Street Kitchen'
},
{
address: { street: 'Broadway', zipcode: '10003' },
name: "Bully'S Deli"
},
{
address: { street: 'East 74 Street', zipcode: '10021' },
name: 'Glorious Food'
},
{
address: { street: 'Southern Boulevard', zipcode: '10460' },
name: 'Wild Asia'
},
.....
説明
このMongoDBのアグリゲーションクエリは、’restaurants’ コレクション内のデータを処理し、特定の条件を満たすレストラン情報を取得します。具体的な手順は次の通りです:
$unwind: “$address”:
このステージでは、“address” フィールドが配列の形式で格納されている場合に、各要素を個別のドキュメントとして分割します。これにより、複数の “address” ドキュメントが存在する場合でも、各ドキュメントは個別に処理されます。
$match: { “address.zipcode”: /^10/ }:
このステージでは、”address.zipcode” フィールドが正規表現パターン /^10/ に一致するかどうかをチェックします。この条件は、”address.zipcode” フィールドの値が「10」で始まる場合に一致します。これにより、郵便番号が「10」で始まるレストランの情報が絞り込まれます。
$project: { … }:
このステージでは、取得するフィールドを指定しています。“name” フィールド、”address.street” フィールド、および “address.zipcode” フィールドの情報を取得します。また、“_id” フィールドは除外されます。
要するに、このアグリゲーションクエリの目的は、”address.zipcode” フィールドの値が「10」で始まるレストランの名前、住所の通り名、および郵便番号を取得することです。結果は、指定されたフィールドの情報が表示されたドキュメントとして返されます。
Previous:名前に「コーヒー」という言葉が含まれているレストランを調べてください
コメント