MongoDB 練習 – 郵便番号が 10 で始まるレストランの名前と住所を取得します

MongoDB

MongoDB Exercises

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:名前に「コーヒー」という言葉が含まれているレストランを調べてください

Next:「B」で始まる料理を提供するレストランの名前と住所

コメント

タイトルとURLをコピーしました