db.flightData.insertOne(
{
"departureAirport": "MUC",
"arrivalAirport": "SFO",
"aircraft": "Airbus A380",
"distance": 12000,
"intercontinetal": true
})
db.flightData.insertOne(
{
"departureAirport": "LHR",
"arrivalAirport": "TXL",
"aircraft": "Airbus A320",
"distance": 950,
"intercontinetal": false
})
db.flightData.insertMany(
[
{
"departureAirport": "MUC",
"arrivalAirport": "SFO",
"aircraft": "Airbus A380",
"distance": 12000,
"intercontinental": true
},
{
"departureAirport": "LHR",
"arrivalAirport": "TXL",
"aircraft": "Airbus A320",
"distance": 950,
"intercontinental": false
}
])
db.flightData.insertMany([{
"departureAirport" : "TXL",
"arrivalAirport": "LHR"
},
{
"departureAirport" : "TXL",
"arrivalAirport": "LHR"
}])
db.flightData.deleteOne({ departureAirport: "TXL" })
db.flightData.updateOne(
{
"departureAirport" : "TXL"
},
{
$set:
{
marker: "delete"
}
})
db.flightData.updateMany(
{
"departureAirport" : "TXL"
},
{
$set:
{
marker: "toDelete"
}
})
db.flightData.updateOne(
{
markder:
{
$exists: true
}
},
{
$unset:
{
markder: true
}
}
)
db.flightData.deleteMany(
{
marker: "toDelete"
}
)
db.flightData.find(
{
distance:
{
$gt: 10000
}
}).pretty()
db.flightData.findOne(
{
distance:
{
$gt: 900
}
})
db.flightData.updateOne(
{
"intercontinetal" : true
},
{
$set:
{
"delay": false
}
})
-- 오류 발생
db.flightData.updateOne(
{
"intercontinetal" : true
},
{
"delay": true
})
--> updateOne or updateMany를 사용할 경우 $set을 이용해야 함
$set : 해당 필드의 key, value가 없으면 생성.
key가 있을 경우 value값이 다르면 변경,
value 값이 같으면 유지
-- 변경(delay: true에 대한 정보만 남고 나머지는 덮어씌워짐)
db.flightData.update(
{
"intercontinetal" : true
},
{
"delay": true
})
--> update, insert, remove보다는
updateOne, updateMany, insertOne, insertMany, deleteOne, deleteMany를 사용하길 권장
db.flightData.findOne(
{
distance:
{
$gt: 950
}
})
db.passengers.insertMany(
[
{
"name": "Max Schwarzmueller",
"age": 29
},
{
"name": "Manu Lorenz",
"age": 30
},
{
"name": "Chris Hayton",
"age": 35
},
{
"name": "Sandeep Kumar",
"age": 28
},
{
"name": "Maria Jones",
"age": 30
},
{
"name": "Alexandra Maier",
"age": 27
},
{
"name": "Dr. Phil Evans",
"age": 47
},
{
"name": "Sandra Brugge",
"age": 33
},
{
"name": "Elisabeth Mayr",
"age": 29
},
{
"name": "Frank Cube",
"age": 41
},
{
"name": "Karandeep Alun",
"age": 48
},
{
"name": "Michaela Drayer",
"age": 39
},
{
"name": "Bernd Hoftstadt",
"age": 22
},
{
"name": "Scott Tolib",
"age": 44
},
{
"name": "Freddy Melver",
"age": 41
},
{
"name": "Alexis Bohed",
"age": 35
},
{
"name": "Melanie Palace",
"age": 27
},
{
"name": "Armin Glutch",
"age": 35
},
{
"name": "Klaus Arber",
"age": 53
},
{
"name": "Albert Twostone",
"age": 68
},
{
"name": "Gordon Black",
"age": 38
}
])
--find()와 find().toArray(), find().forEach()의 차이
db.passengers.find() ------> 20개만 보여줌
db.passengers.find().toArray() ------> 모두 가져와서 배열로 보여줌
db.passengers.find().forEach((passengerData) => {printjson(passengerData)}) ------> 모두 Document로 보여줌
-> collections 전체의 document를 하나씩 보면서 passengerData에 넣고 passengerData를 json 형식으로 출력
-- Projection(특정 Field만 select, 보여주고 싶은 Field의 key에 value를 1로 주면 보여지고, 0으로 주면 보여주지 않습니다)
db.passengers.find({},{name: 1}).pretty()
{
"_id" : ObjectId("6549d1208e72769dd043ae1a"),
"name" : "Max Schwarzmueller"
}
{ "_id" : ObjectId("6549d1208e72769dd043ae1b"), "name" : "Manu Lorenz" }
{ "_id" : ObjectId("6549d1208e72769dd043ae1c"), "name" : "Chris Hayton" }
{ "_id" : ObjectId("6549d1208e72769dd043ae1d"), "name" : "Sandeep Kumar" }
{ "_id" : ObjectId("6549d1208e72769dd043ae1e"), "name" : "Maria Jones" }
{ "_id" : ObjectId("6549d1208e72769dd043ae1f"), "name" : "Alexandra Maier" }
{ "_id" : ObjectId("6549d1208e72769dd043ae20"), "name" : "Dr. Phil Evans" }
{ "_id" : ObjectId("6549d1208e72769dd043ae21"), "name" : "Sandra Brugge" }
{ "_id" : ObjectId("6549d1208e72769dd043ae22"), "name" : "Elisabeth Mayr" }
{ "_id" : ObjectId("6549d1208e72769dd043ae23"), "name" : "Frank Cube" }
{ "_id" : ObjectId("6549d1208e72769dd043ae24"), "name" : "Karandeep Alun" }
{ "_id" : ObjectId("6549d1208e72769dd043ae25"), "name" : "Michaela Drayer" }
{ "_id" : ObjectId("6549d1208e72769dd043ae26"), "name" : "Bernd Hoftstadt" }
{ "_id" : ObjectId("6549d1208e72769dd043ae27"), "name" : "Scott Tolib" }
{ "_id" : ObjectId("6549d1208e72769dd043ae28"), "name" : "Freddy Melver" }
{ "_id" : ObjectId("6549d1208e72769dd043ae29"), "name" : "Alexis Bohed" }
{ "_id" : ObjectId("6549d1208e72769dd043ae2a"), "name" : "Melanie Palace" }
{ "_id" : ObjectId("6549d1208e72769dd043ae2b"), "name" : "Armin Glutch" }
{ "_id" : ObjectId("6549d1208e72769dd043ae2c"), "name" : "Klaus Arber" }
{ "_id" : ObjectId("6549d1208e72769dd043ae2d"), "name" : "Albert Twostone" }
Type "it" for more
db.passengers.find({},{name: 1, _id: 0}).pretty()
{ "name" : "Max Schwarzmueller" }
{ "name" : "Manu Lorenz" }
{ "name" : "Chris Hayton" }
{ "name" : "Sandeep Kumar" }
{ "name" : "Maria Jones" }
{ "name" : "Alexandra Maier" }
{ "name" : "Dr. Phil Evans" }
{ "name" : "Sandra Brugge" }
{ "name" : "Elisabeth Mayr" }
{ "name" : "Frank Cube" }
{ "name" : "Karandeep Alun" }
{ "name" : "Michaela Drayer" }
{ "name" : "Bernd Hoftstadt" }
{ "name" : "Scott Tolib" }
{ "name" : "Freddy Melver" }
{ "name" : "Alexis Bohed" }
{ "name" : "Melanie Palace" }
{ "name" : "Armin Glutch" }
{ "name" : "Klaus Arber" }
{ "name" : "Albert Twostone" }
Type "it" for more
db.passengers.find({},{name: 1, _id: 0}).forEach((passengerData) => {printjson(passengerData)})
{ "name" : "Max Schwarzmueller" }
{ "name" : "Manu Lorenz" }
{ "name" : "Chris Hayton" }
{ "name" : "Sandeep Kumar" }
{ "name" : "Maria Jones" }
{ "name" : "Alexandra Maier" }
{ "name" : "Dr. Phil Evans" }
{ "name" : "Sandra Brugge" }
{ "name" : "Elisabeth Mayr" }
{ "name" : "Frank Cube" }
{ "name" : "Karandeep Alun" }
{ "name" : "Michaela Drayer" }
{ "name" : "Bernd Hoftstadt" }
{ "name" : "Scott Tolib" }
{ "name" : "Freddy Melver" }
{ "name" : "Alexis Bohed" }
{ "name" : "Melanie Palace" }
{ "name" : "Armin Glutch" }
{ "name" : "Klaus Arber" }
{ "name" : "Albert Twostone" }
{ "name" : "Gordon Black" }
Document 안에 Document가 들어갈 수 있고
중첩 레벨은 100까지 가능
하나의 Document는 16MB까지
텍스트만 저장
-- Embedded Document
db.flightData.updateMany({}, {$set: {"status": {"description": "on-time", "lastUpdated": "1 hour ago"}}})
db.flightData.updateMany({}, {$set: {"status": {"description": "on-time", "lastUpdated": "1 hour ago", "details": {responsible: "Max Schwarzmueller"}}}})
db.flightData.find({},{"status.description": 1})
db.flightData.find({},{"_id":0, "status.description": 1})
db.flightData.find({"status.description": "on-time"}).pretty()
-- Embedded Array
db.passengers.updateOne({name: "Albert Twostone"}, {$set: {hobbies: ["sports", "cooking"]}})
db.passengers.findOne({name: "Albert Twostone"}).hobbies
db.passengers.findOne({hobbies: "sports"})