{"id":797,"date":"2022-12-24T13:46:03","date_gmt":"2023-07-05T11:07:26","guid":{"rendered":"https:\/\/www.silicloud.com\/ja\/blog\/index.php\/2023\/11\/30\/%e3%82%b9%e3%83%97%e3%83%aa%e3%83%b3%e3%82%b0%e3%83%96%e3%83%bc%e3%83%88%e3%83%a2%e3%83%b3%e3%82%b4db\/"},"modified":"2025-08-01T02:33:03","modified_gmt":"2025-07-31T17:33:03","slug":"%e3%82%b9%e3%83%97%e3%83%aa%e3%83%b3%e3%82%b0%e3%83%96%e3%83%bc%e3%83%88%e3%83%a2%e3%83%b3%e3%82%b4db","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/ja\/blog\/%e3%82%b9%e3%83%97%e3%83%aa%e3%83%b3%e3%82%b0%e3%83%96%e3%83%bc%e3%83%88%e3%83%a2%e3%83%b3%e3%82%b4db\/","title":{"rendered":"\u30b9\u30d7\u30ea\u30f3\u30b0\u30d6\u30fc\u30c8\u30e2\u30f3\u30b4DB"},"content":{"rendered":"<p>\u300cSpring Boot MongoDB\u306e\u4f8b\u3078\u3088\u3046\u3053\u305d\u3002Spring Boot\u306f\u3001\u30b9\u30d7\u30ea\u30f3\u30b0\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u7d20\u65e9\u304f\u7acb\u3061\u4e0a\u3052\u308b\u305f\u3081\u306e\u6700\u3082\u7c21\u5358\u306a\u65b9\u6cd5\u3067\u3042\u308a\u3001MongoDB\u306f\u6700\u3082\u4eba\u6c17\u306e\u3042\u308bNoSQL\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3067\u3059\u3002\u3067\u306f\u3001Spring\u3068MongoDB\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u3069\u306e\u3088\u3046\u306b\u7d71\u5408\u3059\u308b\u304b\u898b\u3066\u307f\u307e\u3057\u3087\u3046\u3002\u300d<\/p>\n<h2>\u30b9\u30d7\u30ea\u30f3\u30b0\u30d6\u30fc\u30c8\u306e\u30e2\u30f3\u30b4DB<\/h2>\n<p>\u30b9\u30d7\u30ea\u30f3\u30b0\u30d6\u30fc\u30c8\u3068MongoDB\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u4f7f\u7528\u3059\u308b\u305f\u3081\u306b\u3001\u4ee5\u4e0b\u306eAPI\u304c\u5fc5\u8981\u3067\u3059\u3002<\/p>\n<ul class=\"post-ul\">\n<li>Spring Data MongoDB<\/li>\n<li>Spring Boot<\/li>\n<\/ul>\n<p>MongoDB\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u63a5\u7d9a\u3059\u308b\u305f\u3081\u306e2\u3064\u306e\u30a2\u30d7\u30ed\u30fc\u30c1\u304c\u3042\u308a\u307e\u3059 &#8211; MongoRepository\u3068MongoTemplate\u3067\u3059\u3002\u4e00\u3064API\u304c\u4ed6\u3088\u308a\u63d0\u4f9b\u3059\u308b\u3082\u306e\u3068\u3001\u3069\u3061\u3089\u3092\u9078\u3076\u3079\u304d\u304b\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u7d20\u65e9\u3044\u8a2d\u5b9a\u306e\u305f\u3081\u306bSpring Initializr\u30c4\u30fc\u30eb\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\u3055\u3042\u3001\u59cb\u3081\u307e\u3057\u3087\u3046\u3002<\/p>\n<h3>\u6625\u306e\u30d6\u30fc\u30c8MongoDB\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7<\/h3>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/6564a19cdaa94e2bdf7c2d2a\/6-0.png\" alt=\"spring boot mongodb project setup using spring initializr\" \/><\/div>\n<h3>\u30e1\u30a4\u30d6\u30f3\u306e\u4f9d\u5b58\u95a2\u4fc2<\/h3>\n<p>\u30c4\u30fc\u30eb\u3092\u4f7f\u3063\u3066\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u306f\u65e2\u306b\u5b8c\u4e86\u3057\u307e\u3057\u305f\u304c\u3001\u624b\u52d5\u3067\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u3059\u308b\u5834\u5408\u306f\u3001\u3053\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u306fMaven\u30d3\u30eb\u30c9\u30b7\u30b9\u30c6\u30e0\u3092\u4f7f\u7528\u3057\u3066\u3044\u307e\u3059\u3002\u4ee5\u4e0b\u306b\u4f7f\u7528\u3057\u305f\u4f9d\u5b58\u95a2\u4fc2\u3092\u8a18\u8f09\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code>&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\r\n&lt;project xmlns=\"https:\/\/maven.apache.org\/POM\/4.0.0\" xmlns:xsi=\"https:\/\/www.w3.org\/2001\/XMLSchema-instance\"\r\n\txsi:schemaLocation=\"https:\/\/maven.apache.org\/POM\/4.0.0 https:\/\/maven.apache.org\/xsd\/maven-4.0.0.xsd\"&gt;\r\n\t&lt;modelVersion&gt;4.0.0&lt;\/modelVersion&gt;\r\n\r\n\t&lt;groupId&gt;com.scdev.spring&lt;\/groupId&gt;\r\n\t&lt;artifactId&gt;spring-boot-mongodb&lt;\/artifactId&gt;\r\n\t&lt;version&gt;0.0.1-SNAPSHOT&lt;\/version&gt;\r\n\t&lt;packaging&gt;jar&lt;\/packaging&gt;\r\n\r\n\t&lt;name&gt;spring-boot-mongodb&lt;\/name&gt;\r\n\t&lt;description&gt;Spring Boot MongoDB Example&lt;\/description&gt;\r\n\r\n\t&lt;parent&gt;\r\n\t\t&lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;\r\n\t\t&lt;artifactId&gt;spring-boot-starter-parent&lt;\/artifactId&gt;\r\n\t\t&lt;version&gt;1.5.9.RELEASE&lt;\/version&gt;\r\n\t\t&lt;relativePath \/&gt; &lt;!-- lookup parent from repository --&gt;\r\n\t&lt;\/parent&gt;\r\n\r\n\t&lt;properties&gt;\r\n\t\t&lt;project.build.sourceEncoding&gt;UTF-8&lt;\/project.build.sourceEncoding&gt;\r\n\t\t&lt;project.reporting.outputEncoding&gt;UTF-8&lt;\/project.reporting.outputEncoding&gt;\r\n\t\t&lt;java.version&gt;1.8&lt;\/java.version&gt;\r\n\t&lt;\/properties&gt;\r\n\r\n\t&lt;dependencies&gt;\r\n\t\t&lt;dependency&gt;\r\n\t\t\t&lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;\r\n\t\t\t&lt;artifactId&gt;spring-boot-starter-data-mongodb&lt;\/artifactId&gt;\r\n\t\t&lt;\/dependency&gt;\r\n\t\t&lt;dependency&gt;\r\n\t\t\t&lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;\r\n\t\t\t&lt;artifactId&gt;spring-boot-starter-web&lt;\/artifactId&gt;\r\n\t\t&lt;\/dependency&gt;\r\n\r\n\t\t&lt;dependency&gt;\r\n\t\t\t&lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;\r\n\t\t\t&lt;artifactId&gt;spring-boot-starter-test&lt;\/artifactId&gt;\r\n\t\t\t&lt;scope&gt;test&lt;\/scope&gt;\r\n\t\t&lt;\/dependency&gt;\r\n\t&lt;\/dependencies&gt;\r\n\r\n\t&lt;build&gt;\r\n\t\t&lt;plugins&gt;\r\n\t\t\t&lt;plugin&gt;\r\n\t\t\t\t&lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;\r\n\t\t\t\t&lt;artifactId&gt;spring-boot-maven-plugin&lt;\/artifactId&gt;\r\n\t\t\t&lt;\/plugin&gt;\r\n\t\t&lt;\/plugins&gt;\r\n\t&lt;\/build&gt;\r\n&lt;\/project&gt;\r\n<\/code><\/pre>\n<p>Maven\u306e\u4e2d\u592e\u30ea\u30dd\u30b8\u30c8\u30ea\u304b\u3089Spring Boot\u306e\u5b89\u5b9a\u7248\u3092\u4f7f\u7528\u3059\u308b\u3088\u3046\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<h3>\u30b9\u30d7\u30ea\u30f3\u30b0\u30d6\u30fc\u30c8\u306eMongoDB\u30e2\u30c7\u30eb\u30af\u30e9\u30b9<\/h3>\n<p>\u79c1\u305f\u3061\u306b\u306f\u3001\u7c21\u5358\u306a\u30e2\u30c7\u30eb\u30af\u30e9\u30b9User.java\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code>package com.scdev.bootifulmongodb.model;\r\n\r\nimport java.util.Date;\r\nimport java.util.HashMap;\r\nimport java.util.Map;\r\n\r\nimport org.springframework.data.annotation.Id;\r\nimport org.springframework.data.mongodb.core.mapping.Document;\r\n\r\n@Document\r\npublic class User {\r\n\r\n\t@Id\r\n\tprivate String userId;\r\n\tprivate String name;\r\n\tprivate Date creationDate = new Date();\r\n\tprivate Map&lt;String, String&gt; userSettings = new HashMap&lt;&gt;();\r\n\r\n\tpublic String getUserId() {\r\n\t\treturn userId;\r\n\t}\r\n\r\n\tpublic void setUserId(String userId) {\r\n\t\tthis.userId = userId;\r\n\t}\r\n\r\n\tpublic String getName() {\r\n\t\treturn name;\r\n\t}\r\n\r\n\tpublic void setName(String name) {\r\n\t\tthis.name = name;\r\n\t}\r\n\r\n\tpublic Date getCreationDate() {\r\n\t\treturn creationDate;\r\n\t}\r\n\r\n\tpublic void setCreationDate(Date creationDate) {\r\n\t\tthis.creationDate = creationDate;\r\n\t}\r\n\r\n\tpublic Map&lt;String, String&gt; getUserSettings() {\r\n\t\treturn userSettings;\r\n\t}\r\n\r\n\tpublic void setUserSettings(Map&lt;String, String&gt; userSettings) {\r\n\t\tthis.userSettings = userSettings;\r\n\t}\r\n}\r\n<\/code><\/pre>\n<h3>\u30b9\u30d7\u30ea\u30f3\u30b0\u30d6\u30fc\u30c8\u306eMongoDB\u306eAPI<\/h3>\n<p>\u79c1\u305f\u3061\u306f\u3001\u30a2\u30d7\u30ea\u5185\u3067\u4ee5\u4e0b\u306e\u6a5f\u80fd\u3068\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u76f8\u4e92\u4f5c\u7528\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002<\/p>\n<ul class=\"post-ul\">\n<li>Get all users<\/li>\n<li>Get a user with ID<\/li>\n<li>Get user settings<\/li>\n<li>Get a particular key from the Map<\/li>\n<li>Add\/Update user setting<\/li>\n<\/ul>\n<h2>Spring Data MongoDB &#8211; MongoRepository\u306f\u3001MongoDB\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3078\u306e\u30a2\u30af\u30bb\u30b9\u3092\u5bb9\u6613\u306b\u3059\u308b\u305f\u3081\u306eSpring Data\u306e\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3067\u3059\u3002<\/h2>\n<p>\u4eca\u56de\u306f\u3001Spring Data MongoDB \u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u4f7f\u7528\u3057\u3066\u30c7\u30fc\u30bf\u306b\u30a2\u30af\u30bb\u30b9\u3057\u307e\u3059\u3002Spring Data MongoRepository \u306f\u3001\u7c21\u5358\u306b\u30d7\u30e9\u30b0\u30a4\u30f3\u3057\u3066\u4f7f\u7528\u3067\u304d\u308b\u5171\u901a\u306e\u6a5f\u80fd\u3092\u63d0\u4f9b\u3057\u3066\u304f\u308c\u307e\u3059\u3002\u3067\u306f\u3001\u30ea\u30dd\u30b8\u30c8\u30ea\u306e\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u3092\u5b9a\u7fa9\u3057\u307e\u3057\u3087\u3046\u3002<\/p>\n<pre class=\"post-pre\"><code>package com.scdev.bootifulmongodb.dal;\r\n\r\nimport org.springframework.data.mongodb.repository.MongoRepository;\r\nimport org.springframework.stereotype.Repository;\r\n\r\nimport com.scdev.bootifulmongodb.model.User;\r\n\r\n@Repository\r\npublic interface UserRepository extends MongoRepository&lt;User, String&gt; {\r\n}\r\n<\/code><\/pre>\n<h3>MongoDB\u30d7\u30ed\u30d1\u30c6\u30a3\u306e\u5b9a\u7fa9<\/h3>\n<p>\u79c1\u305f\u3061\u304c\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u3092\u5c55\u958b\u3059\u308b\u524d\u306b\u3001MongoDB\u306e\u30ed\u30fc\u30ab\u30eb\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3068\u306e\u63a5\u7d9a\u3092\u78ba\u7acb\u3059\u308b\u3053\u3068\u304c\u91cd\u8981\u3067\u3059\u3002\u3053\u308c\u306b\u306fSpring Boot\u306e\u30d7\u30ed\u30d1\u30c6\u30a3\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code>#Local MongoDB config\r\nspring.data.mongodb.authentication-database=admin\r\nspring.data.mongodb.username=root\r\nspring.data.mongodb.password=root\r\nspring.data.mongodb.database=user_db\r\nspring.data.mongodb.port=27017\r\nspring.data.mongodb.host=localhost\r\n\r\n# App config\r\nserver.port=8102\r\nspring.application.name=BootMongo\r\nserver.context-path=\/user\r\n<\/code><\/pre>\n<p>\u3067\u3059\u306e\u3067\u3001\u30a2\u30d7\u30ea\u306f\u30dd\u30fc\u30c88102\u3067\u5b9f\u884c\u3055\u308c\u3001\u63d0\u4f9b\u3055\u308c\u305f\u8a8d\u8a3c\u60c5\u5831\u3067\u30ed\u30fc\u30ab\u30eb\u306emongoDB\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306b\u63a5\u7d9a\u3057\u307e\u3059\u3002\u8a8d\u8a3c\u304c\u6709\u52b9\u5316\u3055\u308c\u3066\u3044\u306a\u3044\u30ed\u30fc\u30ab\u30eb\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u304c\u3042\u308b\u5834\u5408\u306f\u3001\u8a2d\u5b9a\u306e\u6700\u521d\u306e3\u884c\u3092\u524a\u9664\u3059\u308b\u3060\u3051\u3067\u69cb\u3044\u307e\u305b\u3093\u3002<\/p>\n<h3>\u6625\u306e\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u3092\u5b9a\u7fa9\u3059\u308b<\/h3>\n<p>\u6700\u7d42\u7684\u306b\u306f\u3001\u79c1\u305f\u3061\u306eController\u30af\u30e9\u30b9\u4f5c\u6210\u306b\u79fb\u308a\u307e\u3057\u3087\u3046\u3002<\/p>\n<pre class=\"post-pre\"><code>package com.scdev.bootifulmongodb.controller;\r\n\r\nimport java.util.List;\r\n\r\nimport org.slf4j.Logger;\r\nimport org.slf4j.LoggerFactory;\r\nimport org.springframework.web.bind.annotation.PathVariable;\r\nimport org.springframework.web.bind.annotation.RequestBody;\r\nimport org.springframework.web.bind.annotation.RequestMapping;\r\nimport org.springframework.web.bind.annotation.RequestMethod;\r\nimport org.springframework.web.bind.annotation.RestController;\r\n\r\nimport com.scdev.bootifulmongodb.dal.UserRepository;\r\nimport com.scdev.bootifulmongodb.model.User;\r\n\r\n@RestController\r\n@RequestMapping(value = \"\/\")\r\npublic class UserController {\r\n\r\n\tprivate final Logger LOG = LoggerFactory.getLogger(getClass());\r\n\r\n\tprivate final UserRepository userRepository;\r\n\r\n\tpublic UserController(UserRepository userRepository) {\r\n\t\tthis.userRepository = userRepository;\r\n\t}\r\n}\r\n<\/code><\/pre>\n<p>\u79c1\u305f\u3061\u306f\u3001\u30ea\u30dd\u30b8\u30c8\u30ea\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u306e\u4f9d\u5b58\u95a2\u4fc2\u3092\u81ea\u52d5\u30ef\u30a4\u30e4\u30ea\u30f3\u30b0\u3057\u307e\u3057\u305f\u3002\u6b21\u306b\u3001\u3053\u308c\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002<\/p>\n<h3>API\u306e\u5b9a\u7fa9<\/h3>\n<p>\u79c1\u305f\u3061\u304c\u8a00\u53ca\u3057\u305f\u6a5f\u80fd\u306b\u3064\u3044\u3066\u3001\u4eca\u5f8c\u306fAPI\u3092\u4f5c\u6210\u3057\u3001Spring Data MongoRepository API\u3092\u5185\u90e8\u3067\u5229\u7528\u3059\u308buserRepository\u4f9d\u5b58\u6027\u306b\u30a2\u30af\u30bb\u30b9\u3057\u307e\u3059\u3002\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u3067\u306f\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u3084\u308a\u53d6\u308a\u306e\u305f\u3081\u306e\u30b3\u30fc\u30c9\u3092\u66f8\u304f\u5fc5\u8981\u306f\u306a\u304f\u3001Spring Data\u304c\u3059\u3079\u3066\u3084\u3063\u3066\u304f\u308c\u308b\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<h4>\u3059\u3079\u3066\u306e\u30e6\u30fc\u30b6\u30fc\u3092\u53d6\u5f97\u3059\u308b<\/h4>\n<pre class=\"post-pre\"><code>@RequestMapping(value = \"\", method = RequestMethod.GET)\r\npublic List&lt;User&gt; getAllUsers() {\r\n\tLOG.info(\"Getting all users.\");\r\n\treturn userRepository.findAll();\r\n}\r\n<\/code><\/pre>\n<p>findAll()\u306f\u3001Spring Data MongoRepository\u304c\u5185\u90e8\u7684\u306b\u63d0\u4f9b\u3059\u308b\u30e1\u30bd\u30c3\u30c9\u3067\u3059\u3002<\/p>\n<h4>ID\u3067\u30e6\u30fc\u30b6\u30fc\u3092\u53d6\u5f97\u3059\u308b<\/h4>\n<p>\u4eca\u3001\u7279\u5b9a\u306eID\u3092\u6301\u3064\u30e6\u30fc\u30b6\u30fc\u3092\u53d6\u5f97\u3057\u307e\u3057\u3087\u3046\u3002<\/p>\n<pre class=\"post-pre\"><code>@RequestMapping(value = \"\/{userId}\", method = RequestMethod.GET)\r\npublic User getUser(@PathVariable String userId) {\r\n\tLOG.info(\"Getting user with ID: {}.\", userId);\r\n\treturn userRepository.findOne(userId);\r\n}\r\n<\/code><\/pre>\n<p>findOne() \u306f\u3001Spring Data MongoRepository \u304c\u5185\u90e8\u7684\u306b\u63d0\u4f9b\u3059\u308b\u30e1\u30bd\u30c3\u30c9\u3067\u3042\u308a\u3001ID \u306b\u3088\u3063\u3066\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u53d6\u5f97\u3059\u308b\u305f\u3081\u306b\u4f7f\u308f\u308c\u307e\u3059\u3002<\/p>\n<h4>\u65b0\u3057\u3044\u30e6\u30fc\u30b6\u30fc\u3092\u8ffd\u52a0\u3059\u308b<\/h4>\n<p>\u4ee5\u4e0b\u306e\u6a5f\u80fd\u306b\u65b0\u3057\u3044\u30e6\u30fc\u30b6\u30fc\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code>@RequestMapping(value = \"\/create\", method = RequestMethod.POST)\r\npublic User addNewUsers(@RequestBody User user) {\r\n\tLOG.info(\"Saving user.\");\r\n\treturn userRepository.save(user);\r\n}\r\n<\/code><\/pre>\n<h4>\u30e6\u30fc\u30b6\u30fc\u8a2d\u5b9a\u306e\u53d6\u5f97<\/h4>\n<p>DB\u306b\u30b5\u30f3\u30d7\u30eb\u30c7\u30fc\u30bf\u3092\u8ffd\u52a0\u3057\u305f\u306e\u3067\u3001\u305d\u308c\u3092\u4e00\u90e8\u62bd\u51fa\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002<\/p>\n<pre class=\"post-pre\"><code>@RequestMapping(value = \"\/settings\/{userId}\", method = RequestMethod.GET)\r\npublic Object getAllUserSettings(@PathVariable String userId) {\r\n\tUser user = userRepository.findOne(userId);\r\n\tif (user != null) {\r\n\t\treturn user.getUserSettings();\r\n\t} else {\r\n\t\treturn \"User not found.\";\r\n\t}\r\n}\r\n<\/code><\/pre>\n<h4>\u7279\u5b9a\u306e\u30e6\u30fc\u30b6\u30fc\u8a2d\u5b9a\u3092\u53d6\u5f97\u3059\u308b<\/h4>\n<pre class=\"post-pre\"><code>@RequestMapping(value = \"\/settings\/{userId}\/{key}\", method = RequestMethod.GET)\r\npublic String getUserSetting(@PathVariable String userId, @PathVariable String key) {\r\n\tUser user = userRepository.findOne(userId);\r\n\tif (user != null) {\r\n\t\treturn user.getUserSettings().get(key);\r\n\t} else {\r\n\t\treturn \"User not found.\";\r\n\t}\r\n}\r\n<\/code><\/pre>\n<p>\u4e0a\u8a18\u306e\u30af\u30a8\u30ea\u3067\u3001\u30e6\u30fc\u30b6\u30fc\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u53d6\u5f97\u3057\u3001\u5b8c\u5168\u306a\u8a2d\u5b9a\u30de\u30c3\u30d7\uff08\u6570\u5343\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u542b\u3080\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\uff09\u3092\u62bd\u51fa\u3057\u3001\u6700\u7d42\u7684\u306b\u81ea\u5206\u306e\u5024\u3092\u53d6\u5f97\u3057\u307e\u3057\u305f\u3002\u3053\u308c\u306f\u3001Spring Data\u30af\u30a8\u30ea\u3092\u76f4\u63a5API\u3068\u3057\u3066\u4f7f\u7528\u3059\u308b\u5834\u5408\u306e\u30c7\u30e1\u30ea\u30c3\u30c8\u3067\u3059\u3002<\/p>\n<h4>\u65b0\u3057\u3044\u30e6\u30fc\u30b6\u30fc\u8a2d\u5b9a\u3092\u8ffd\u52a0\u3059\u308b\u3002<\/h4>\n<p>\u65e2\u5b58\u306e\u30e6\u30fc\u30b6\u30fc\u306b\u30c7\u30fc\u30bf\u3092\u8ffd\u52a0\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002<\/p>\n<pre class=\"post-pre\"><code>@RequestMapping(value = \"\/settings\/{userId}\/{key}\/{value}\", method = RequestMethod.GET)\r\npublic String addUserSetting(@PathVariable String userId, @PathVariable String key, @PathVariable String value) {\r\n\tUser user = userRepository.findOne(userId);\r\n\tif (user != null) {\r\n\t\tuser.getUserSettings().put(key, value);\r\n\t\tuserRepository.save(user);\r\n\t\treturn \"Key added\";\r\n\t} else {\r\n\t\treturn \"User not found.\";\r\n\t}\r\n}\r\n<\/code><\/pre>\n<p>\u79c1\u305f\u3061\u304c\u66f8\u3044\u305f\u3059\u3079\u3066\u306e\u30b3\u30fc\u30c9\u3092\u8003\u3048\u308b\u3068\u3001\u30ea\u30dd\u30b8\u30c8\u30ea\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u306e\u5b9a\u7fa9\u3068\u4f9d\u5b58\u95a2\u4fc2\u306e\u81ea\u52d5\u63a5\u7d9a\u4ee5\u5916\u306b\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3078\u30a2\u30af\u30bb\u30b9\u3059\u308b\u305f\u3081\u306e\u30b3\u30fc\u30c9\u3092\u4e00\u884c\u3082\u66f8\u304f\u5fc5\u8981\u306f\u3042\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u3053\u308c\u304cSpring Data MongoRepository API\u304c\u63d0\u4f9b\u3057\u3066\u304f\u308c\u308b\u7c21\u5358\u3055\u3067\u3059\u304c\u3001\u3053\u308c\u306b\u306f\u3044\u304f\u3064\u304b\u306e\u6b20\u70b9\u3082\u3042\u308a\u307e\u3059\u3002MongoTemplate\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u5b9a\u7fa9\u3057\u305f\u5f8c\u3067\u3001\u3053\u308c\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u8aac\u660e\u3057\u307e\u3059\u3002\u305d\u308c\u3067\u306f\u3001MongoTemplate\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u5b9a\u7fa9\u304b\u3089\u59cb\u3081\u307e\u3057\u3087\u3046\u3002<\/p>\n<h2>Spring Data MongoDB\u306f\u3001MongoTemplate\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002<\/h2>\n<p>\u3053\u3053\u3067\u306f\u3001MongoTemplate\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30af\u30a8\u30ea\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002MongoTemplate\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u30af\u30a8\u30ea\u3059\u308b\u5185\u5bb9\u3084\u7d50\u679c\u306b\u542b\u307e\u308c\u308b\u30c7\u30fc\u30bf\u3092\u7d30\u304b\u304f\u5236\u5fa1\u3067\u304d\u308b\u3053\u3068\u304c\u308f\u304b\u308a\u307e\u3059\u3002<\/p>\n<h4>DAL\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u306e\u5b9a\u7fa9<\/h4>\n<p>\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30a2\u30af\u30bb\u30b9\u5c64\u3067\u5951\u7d04\u3092\u63d0\u4f9b\u3059\u308b\u305f\u3081\u306b\u3001\u79c1\u305f\u3061\u306fSpring Data\u306e\u7d44\u307f\u8fbc\u307f\u30e1\u30bd\u30c3\u30c9\u3068\u540c\u69d8\u306b\u52d5\u4f5c\u3059\u308b\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u3092\u5b9a\u7fa9\u3057\u3066\u59cb\u3081\u307e\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code>package com.scdev.bootifulmongodb.dal;\r\n\r\nimport java.util.List;\r\n\r\nimport com.scdev.bootifulmongodb.model.User;\r\n\r\npublic interface UserDAL {\r\n\r\n\tList&lt;User&gt; getAllUsers();\r\n\r\n\tUser getUserById(String userId);\r\n\r\n\tUser addNewUser(User user);\r\n\r\n\tObject getAllUserSettings(String userId);\r\n\r\n\tString getUserSetting(String userId, String key);\r\n\r\n\tString addUserSetting(String userId, String key, String value);\r\n}\r\n<\/code><\/pre>\n<h4>DAL \u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u306e\u5b9f\u88c5<\/h4>\n<p>\u3055\u3066\u3001\u6b21\u306b\u3053\u308c\u3089\u306e\u65b9\u6cd5\u3092\u5b9a\u7fa9\u3057\u3066\u3044\u304d\u307e\u3057\u3087\u3046\u3002<\/p>\n<pre class=\"post-pre\"><code>package com.scdev.bootifulmongodb.dal;\r\n\r\nimport java.util.List;\r\n\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.data.mongodb.core.MongoTemplate;\r\nimport org.springframework.data.mongodb.core.query.Criteria;\r\nimport org.springframework.data.mongodb.core.query.Query;\r\nimport org.springframework.stereotype.Repository;\r\n\r\nimport com.scdev.bootifulmongodb.model.User;\r\n\r\n@Repository\r\npublic class UserDALImpl implements UserDAL {\r\n\r\n\t@Autowired\r\n\tprivate MongoTemplate mongoTemplate;\r\n\r\n\t@Override\r\n\tpublic List&lt;User&gt; getAllUsers() {\r\n\t\treturn mongoTemplate.findAll(User.class);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic User getUserById(String userId) {\r\n\t\tQuery query = new Query();\r\n\t\tquery.addCriteria(Criteria.where(\"userId\").is(userId));\r\n\t\treturn mongoTemplate.findOne(query, User.class);\r\n\t}\r\n\r\n\t@Override\r\n\tpublic User addNewUser(User user) {\r\n\t\tmongoTemplate.save(user);\r\n\t\t\/\/ Now, user object will contain the ID as well\r\n\t\treturn user;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic Object getAllUserSettings(String userId) {\r\n\t\tQuery query = new Query();\r\n\t\tquery.addCriteria(Criteria.where(\"userId\").is(userId));\r\n\t\tUser user = mongoTemplate.findOne(query, User.class);\r\n\t\treturn user != null ? user.getUserSettings() : \"User not found.\";\r\n\t}\r\n\r\n\t@Override\r\n\tpublic String getUserSetting(String userId, String key) {\r\n\t\tQuery query = new Query();\r\n\t\tquery.fields().include(\"userSettings\");\r\n\t\tquery.addCriteria(Criteria.where(\"userId\").is(userId).andOperator(Criteria.where(\"userSettings.\" + key).exists(true)));\r\n\t\tUser user = mongoTemplate.findOne(query, User.class);\r\n\t\treturn user != null ? user.getUserSettings().get(key) : \"Not found.\";\r\n\t}\r\n\r\n\t@Override\r\n\tpublic String addUserSetting(String userId, String key, String value) {\r\n\t\tQuery query = new Query();\r\n\t\tquery.addCriteria(Criteria.where(\"userId\").is(userId));\r\n\t\tUser user = mongoTemplate.findOne(query, User.class);\r\n\t\tif (user != null) {\r\n\t\t\tuser.getUserSettings().put(key, value);\r\n\t\t\tmongoTemplate.save(user);\r\n\t\t\treturn \"Key added.\";\r\n\t\t} else {\r\n\t\t\treturn \"User not found.\";\r\n\t\t}\r\n\t}\r\n}\r\n<\/code><\/pre>\n<p>\u4e0a\u8a18\u306e\u30af\u30e9\u30b9\u306e\u30e1\u30bd\u30c3\u30c9\u5b9f\u88c5\u306f\u3001MongoTemplate\u306e\u4f9d\u5b58\u95a2\u4fc2\u3092\u4f7f\u7528\u3057\u3066\u3044\u307e\u3059\u3002getUserById(&#8230;)\u30e1\u30bd\u30c3\u30c9\u304c\u30e6\u30fc\u30b6\u30fc\u3092\u53d6\u5f97\u3059\u308b\u65b9\u6cd5\u3092\u898b\u3066\u307f\u307e\u3057\u3087\u3046\u3002\u30af\u30a8\u30ea\u3092\u69cb\u7bc9\u3057\u3001\u5fc5\u8981\u306a\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u6e21\u3057\u307e\u3057\u305f\u3002\u3055\u3089\u306b\u8208\u5473\u6df1\u3044\u306e\u306f\u3001getUserSetting\u30af\u30a8\u30ea\u3067\u3059\u3002\u4e0a\u8a18\u3067\u4f55\u304c\u8d77\u3053\u3063\u305f\u306e\u304b\u3092\u7406\u89e3\u3057\u307e\u3057\u3087\u3046\u3002<\/p>\n<ul class=\"post-ul\">\n<li>We constructed queries with criteria to check equality.<\/li>\n<li>The include method includes the field names which the result should include when it is extracted from DB. This means, in this case, userSettings key will be extracted which will save a lot of data to be fetched which is not needed<\/li>\n<li>Also, we queried upon both user and the map key. Id any of it isn\u2019t found, we return empty data meaning the required key wasn\u2019t found. This saves from even fetching the User object at all if the required key was not present<\/li>\n<\/ul>\n<h2>Spring Data MongoDB\u306e\u30c6\u30b9\u30c8\u30e9\u30f3<\/h2>\n<p>\u5358\u4e00\u306e\u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3059\u308b\u3060\u3051\u3067\u3001\u3053\u306e\u30a2\u30d7\u30ea\u3092\u7c21\u5358\u306b\u5b9f\u884c\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code>mvn spring-boot:run\r\n<\/code><\/pre>\n<p>\u30a2\u30d7\u30ea\u304c\u5b9f\u884c\u3055\u308c\u3066\u3044\u308b\u72b6\u614b\u3067\u3001\u3053\u306eAPI\u3092\u4f7f\u7528\u3057\u3066\u65b0\u3057\u3044\u30e6\u30fc\u30b6\u30fc\u3092\u4fdd\u5b58\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code>https:\/\/localhost:8102\/user\/create\r\n<\/code><\/pre>\n<p>\u3053\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u306fPOST\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3059\u308b\u305f\u3081\u3001JSON\u30c7\u30fc\u30bf\u3082\u9001\u4fe1\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code>{\r\n  \"name\" : \"Shubham\",\r\n  \"userSettings\" : {\r\n    \"bike\" : \"pulsar\"\r\n  }\r\n}\r\n<\/code><\/pre>\n<p>\u30e2\u30f3\u30b4\u30ec\u30b9\u30dd\u30f3\u30b9\u81ea\u4f53\u3092\u8fd4\u3059\u305f\u3081\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u3082\u306e\u304c\u5f97\u3089\u308c\u307e\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code>{\r\n  \"userId\": \"5a5f28cc3178058b0fafe1dd\",\r\n  \"name\": \"Shubham\",\r\n  \"creationDate\": 1516165830856,\r\n  \"userSettings\": {\r\n    \"bike\" : \"pulsar\"\r\n  }\r\n}\r\n<\/code><\/pre>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/6564a19cdaa94e2bdf7c2d2a\/69-0.png\" alt=\"Spring Data MongoDB MongoRepository Example Create\" \/><\/div>\n<pre class=\"post-pre\"><code>https:\/\/localhost:8102\/user\/\r\n<\/code><\/pre>\n<p>\u79c1\u305f\u3061\u306f\u4f55\u304b\u3092\u53d7\u3051\u53d6\u308b\u3053\u3068\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code>[\r\n  {\r\n    \"userId\": \"5a5f28cc3178058b0fafe1dd\",\r\n    \"name\": \"Shubham\",\r\n    \"creationDate\": 1516165830856,\r\n    \"userSettings\": {\r\n      \"bike\" : \"pulsar\"\r\n    }\r\n  }\r\n]\r\n<\/code><\/pre>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/6564a19cdaa94e2bdf7c2d2a\/73-0.png\" alt=\"Spring Data MongoDB \" \/><\/div>\n<pre class=\"post-pre\"><code>\/\/define Data Access Layer object\r\nprivate final UserDAL userDAL;\r\n\r\n\/\/initialize DAL object via constructor autowiring\r\npublic UserController(UserRepository userRepository, UserDAL userDAL) {\r\n\tthis.userRepository = userRepository;\r\n\tthis.userDAL = userDAL;\r\n}\r\n\r\n\/\/change method implementation to use DAL and hence MongoTemplate\r\n@RequestMapping(value = \"\/settings\/{userId}\", method = RequestMethod.GET)\r\npublic Object getAllUserSettings(@PathVariable String userId) {\r\n    User user = userRepository.findOne(userId);\r\n    if (user != null) {\r\n        return userDAL.getAllUserSettings(userId);\r\n    } else {\r\n        return \"User not found.\";\r\n    }\r\n}\r\n\r\n\/\/change method implementation to use DAL and hence MongoTemplate\r\n@RequestMapping(value = \"\/settings\/{userId}\/{key}\", method = RequestMethod.GET)\r\npublic String getUserSetting(\r\n        @PathVariable String userId, @PathVariable String key) {\r\n    return userDAL.getUserSetting(userId, key);\r\n}\r\n<\/code><\/pre>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/6564a19cdaa94e2bdf7c2d2a\/75-1.png\" alt=\"Spring Data MongoDB MongoTemplate example criteria query\" \/><\/div>\n<h2>MongoTemplate\u3068MongoRepository\u306e\u6bd4\u8f03<\/h2>\n<ul class=\"post-ul\">\n<li>MongoTemplate provides a lot more control when it comes to querying data and what data to pull from database.<\/li>\n<li>Spring Data repositories provide us a convenient outlook on how to fetch data.<\/li>\n<li>MongoTemplate is database dependent. What this means is, with Spring Data repositories, you can easily switch to a different database altogether by simply using a different Spring Data repositories for MySQL or Neo4J or anything else. This is not possible with MongoTemplate.<\/li>\n<\/ul>\n<h2>\u6625\u306e\u30d6\u30fc\u30c8MongoDB\u6982\u8981<\/h2>\n<p>\u3053\u306e\u30ec\u30c3\u30b9\u30f3\u3067\u306f\u3001MongoTemplate\u304cSpring Data\u30ea\u30dd\u30b8\u30c8\u30ea\u3088\u308a\u3082\u30b3\u30f3\u30c8\u30ed\u30fc\u30eb\u304c\u591a\u304f\u306a\u308b\u4e00\u65b9\u3067\u3001\u3088\u308a\u6df1\u3044\u30af\u30a8\u30ea\u304c\u542b\u307e\u308c\u308b\u5834\u5408\u306b\u306f\u5c11\u3057\u8907\u96d1\u306b\u306a\u308b\u3053\u3068\u3092\u898b\u3066\u304d\u307e\u3057\u305f\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u30a2\u30a4\u30c7\u30a2\u3092\u958b\u767a\u3059\u308b\u969b\u306b\u306f\u5b8c\u5168\u306b\u3042\u306a\u305f\u306e\u5224\u65ad\u306b\u59d4\u306d\u3089\u308c\u307e\u3059\u3002\u4ee5\u4e0b\u306e\u30ea\u30f3\u30af\u304b\u3089\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u63d0\u4f9b\u3055\u308c\u305f\u30a2\u30d7\u30ea\u3092\u5b9f\u884c\u3059\u308b\u524d\u306b\u3001MongoDB\u306e\u8a8d\u8a3c\u60c5\u5831\u3092\u5909\u66f4\u3059\u308b\u3053\u3068\u3092\u5fd8\u308c\u305a\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<p>\u30b9\u30d7\u30ea\u30f3\u30b0\u30d6\u30fc\u30c8MongoDB\u306e\u30b5\u30f3\u30d7\u30eb\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u300cSpring Boot MongoDB\u306e\u4f8b\u3078\u3088\u3046\u3053\u305d\u3002Spring Boot\u306f\u3001\u30b9\u30d7\u30ea\u30f3\u30b0\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u7d20\u65e9\u304f\u7acb\u3061\u4e0a\u3052\u308b\u305f\u3081\u306e\u6700\u3082\u7c21\u5358\u306a\u65b9\u6cd5\u3067\u3042\u308a\u3001MongoDB\u306f\u6700\u3082\u4eba\u6c17\u306e\u3042\u308bNoSQL\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3067\u3059\u3002\u3067\u306f\u3001Spr [&hellip;]<\/p>\n","protected":false},"author":10,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[26,61],"class_list":["post-797","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-26","tag-61"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\u30b9\u30d7\u30ea\u30f3\u30b0\u30d6\u30fc\u30c8\u30e2\u30f3\u30b4DB - Blog - Silicon Cloud<\/title>\n<meta name=\"description\" content=\"\u30b9\u30d7\u30ea\u30f3\u30b0\u30d6\u30fc\u30c8\u30e2\u30f3\u30b4DB\u3092\u5206\u304b\u308a\u3084\u3059\u304f\u89e3\u8aac\u3002\u5b9f\u8df5\u7684\u306a\u4f8b\u3068\u30b3\u30fc\u30c9\u3001\u6ce8\u610f\u70b9\u3092\u542b\u3081\u3066\u521d\u5fc3\u8005\u306b\u3082\u7406\u89e3\u3067\u304d\u308b\u3088\u3046\u8aac\u660e\u3057\u307e\u3059\u3002\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/ja\/blog\/\u30b9\u30d7\u30ea\u30f3\u30b0\u30d6\u30fc\u30c8\u30e2\u30f3\u30b4db\/\" \/>\n<meta property=\"og:locale\" content=\"ja_JP\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u30b9\u30d7\u30ea\u30f3\u30b0\u30d6\u30fc\u30c8\u30e2\u30f3\u30b4DB\" \/>\n<meta property=\"og:description\" content=\"\u30b9\u30d7\u30ea\u30f3\u30b0\u30d6\u30fc\u30c8\u30e2\u30f3\u30b4DB\u3092\u5206\u304b\u308a\u3084\u3059\u304f\u89e3\u8aac\u3002\u5b9f\u8df5\u7684\u306a\u4f8b\u3068\u30b3\u30fc\u30c9\u3001\u6ce8\u610f\u70b9\u3092\u542b\u3081\u3066\u521d\u5fc3\u8005\u306b\u3082\u7406\u89e3\u3067\u304d\u308b\u3088\u3046\u8aac\u660e\u3057\u307e\u3059\u3002\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/ja\/blog\/\u30b9\u30d7\u30ea\u30f3\u30b0\u30d6\u30fc\u30c8\u30e2\u30f3\u30b4db\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2023-07-05T11:07:26+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-07-31T17:33:03+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/6564a19cdaa94e2bdf7c2d2a\/6-0.png\" \/>\n<meta name=\"author\" content=\"\u82bd\u4f9d, \u96e8\u591c\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u57f7\u7b46\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u82bd\u4f9d, \u96e8\u591c\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u63a8\u5b9a\u8aad\u307f\u53d6\u308a\u6642\u9593\" \/>\n\t<meta name=\"twitter:data2\" content=\"33\u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/ja\/blog\/%e3%82%b9%e3%83%97%e3%83%aa%e3%83%b3%e3%82%b0%e3%83%96%e3%83%bc%e3%83%88%e3%83%a2%e3%83%b3%e3%82%b4db\/\",\"url\":\"https:\/\/www.silicloud.com\/ja\/blog\/%e3%82%b9%e3%83%97%e3%83%aa%e3%83%b3%e3%82%b0%e3%83%96%e3%83%bc%e3%83%88%e3%83%a2%e3%83%b3%e3%82%b4db\/\",\"name\":\"\u30b9\u30d7\u30ea\u30f3\u30b0\u30d6\u30fc\u30c8\u30e2\u30f3\u30b4DB - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/ja\/blog\/#website\"},\"datePublished\":\"2023-07-05T11:07:26+00:00\",\"dateModified\":\"2025-07-31T17:33:03+00:00\",\"author\":{\"@id\":\"https:\/\/www.silicloud.com\/ja\/blog\/#\/schema\/person\/aeb60a7861f2f002b54c66bd65bc6c27\"},\"description\":\"\u30b9\u30d7\u30ea\u30f3\u30b0\u30d6\u30fc\u30c8\u30e2\u30f3\u30b4DB\u3092\u5206\u304b\u308a\u3084\u3059\u304f\u89e3\u8aac\u3002\u5b9f\u8df5\u7684\u306a\u4f8b\u3068\u30b3\u30fc\u30c9\u3001\u6ce8\u610f\u70b9\u3092\u542b\u3081\u3066\u521d\u5fc3\u8005\u306b\u3082\u7406\u89e3\u3067\u304d\u308b\u3088\u3046\u8aac\u660e\u3057\u307e\u3059\u3002\",\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/ja\/blog\/%e3%82%b9%e3%83%97%e3%83%aa%e3%83%b3%e3%82%b0%e3%83%96%e3%83%bc%e3%83%88%e3%83%a2%e3%83%b3%e3%82%b4db\/#breadcrumb\"},\"inLanguage\":\"ja\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/ja\/blog\/%e3%82%b9%e3%83%97%e3%83%aa%e3%83%b3%e3%82%b0%e3%83%96%e3%83%bc%e3%83%88%e3%83%a2%e3%83%b3%e3%82%b4db\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/ja\/blog\/%e3%82%b9%e3%83%97%e3%83%aa%e3%83%b3%e3%82%b0%e3%83%96%e3%83%bc%e3%83%88%e3%83%a2%e3%83%b3%e3%82%b4db\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.silicloud.com\/ja\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u30b9\u30d7\u30ea\u30f3\u30b0\u30d6\u30fc\u30c8\u30e2\u30f3\u30b4DB\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/ja\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/ja\/blog\/\",\"name\":\"Blog - Silicon Cloud\",\"description\":\"\",\"inLanguage\":\"ja\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/ja\/blog\/#\/schema\/person\/aeb60a7861f2f002b54c66bd65bc6c27\",\"name\":\"\u82bd\u4f9d, \u96e8\u591c\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\/\/www.silicloud.com\/ja\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/6305fe5cabc2b854c1208975a47fbf3f8cef3f7cd775b94dceedbe59b74a8010?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/6305fe5cabc2b854c1208975a47fbf3f8cef3f7cd775b94dceedbe59b74a8010?s=96&d=mm&r=g\",\"caption\":\"\u82bd\u4f9d, \u96e8\u591c\"},\"url\":\"https:\/\/www.silicloud.com\/ja\/blog\/author\/meiamaya\/\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\/\/www.silicloud.com\/ja\/blog\/%e3%82%b9%e3%83%97%e3%83%aa%e3%83%b3%e3%82%b0%e3%83%96%e3%83%bc%e3%83%88%e3%83%a2%e3%83%b3%e3%82%b4db\/#local-main-organization-logo\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Blog - Silicon Cloud\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"\u30b9\u30d7\u30ea\u30f3\u30b0\u30d6\u30fc\u30c8\u30e2\u30f3\u30b4DB - Blog - Silicon Cloud","description":"\u30b9\u30d7\u30ea\u30f3\u30b0\u30d6\u30fc\u30c8\u30e2\u30f3\u30b4DB\u3092\u5206\u304b\u308a\u3084\u3059\u304f\u89e3\u8aac\u3002\u5b9f\u8df5\u7684\u306a\u4f8b\u3068\u30b3\u30fc\u30c9\u3001\u6ce8\u610f\u70b9\u3092\u542b\u3081\u3066\u521d\u5fc3\u8005\u306b\u3082\u7406\u89e3\u3067\u304d\u308b\u3088\u3046\u8aac\u660e\u3057\u307e\u3059\u3002","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/ja\/blog\/\u30b9\u30d7\u30ea\u30f3\u30b0\u30d6\u30fc\u30c8\u30e2\u30f3\u30b4db\/","og_locale":"ja_JP","og_type":"article","og_title":"\u30b9\u30d7\u30ea\u30f3\u30b0\u30d6\u30fc\u30c8\u30e2\u30f3\u30b4DB","og_description":"\u30b9\u30d7\u30ea\u30f3\u30b0\u30d6\u30fc\u30c8\u30e2\u30f3\u30b4DB\u3092\u5206\u304b\u308a\u3084\u3059\u304f\u89e3\u8aac\u3002\u5b9f\u8df5\u7684\u306a\u4f8b\u3068\u30b3\u30fc\u30c9\u3001\u6ce8\u610f\u70b9\u3092\u542b\u3081\u3066\u521d\u5fc3\u8005\u306b\u3082\u7406\u89e3\u3067\u304d\u308b\u3088\u3046\u8aac\u660e\u3057\u307e\u3059\u3002","og_url":"https:\/\/www.silicloud.com\/ja\/blog\/\u30b9\u30d7\u30ea\u30f3\u30b0\u30d6\u30fc\u30c8\u30e2\u30f3\u30b4db\/","og_site_name":"Blog - Silicon Cloud","article_published_time":"2023-07-05T11:07:26+00:00","article_modified_time":"2025-07-31T17:33:03+00:00","og_image":[{"url":"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/6564a19cdaa94e2bdf7c2d2a\/6-0.png"}],"author":"\u82bd\u4f9d, \u96e8\u591c","twitter_card":"summary_large_image","twitter_misc":{"\u57f7\u7b46\u8005":"\u82bd\u4f9d, \u96e8\u591c","\u63a8\u5b9a\u8aad\u307f\u53d6\u308a\u6642\u9593":"33\u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/ja\/blog\/%e3%82%b9%e3%83%97%e3%83%aa%e3%83%b3%e3%82%b0%e3%83%96%e3%83%bc%e3%83%88%e3%83%a2%e3%83%b3%e3%82%b4db\/","url":"https:\/\/www.silicloud.com\/ja\/blog\/%e3%82%b9%e3%83%97%e3%83%aa%e3%83%b3%e3%82%b0%e3%83%96%e3%83%bc%e3%83%88%e3%83%a2%e3%83%b3%e3%82%b4db\/","name":"\u30b9\u30d7\u30ea\u30f3\u30b0\u30d6\u30fc\u30c8\u30e2\u30f3\u30b4DB - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/ja\/blog\/#website"},"datePublished":"2023-07-05T11:07:26+00:00","dateModified":"2025-07-31T17:33:03+00:00","author":{"@id":"https:\/\/www.silicloud.com\/ja\/blog\/#\/schema\/person\/aeb60a7861f2f002b54c66bd65bc6c27"},"description":"\u30b9\u30d7\u30ea\u30f3\u30b0\u30d6\u30fc\u30c8\u30e2\u30f3\u30b4DB\u3092\u5206\u304b\u308a\u3084\u3059\u304f\u89e3\u8aac\u3002\u5b9f\u8df5\u7684\u306a\u4f8b\u3068\u30b3\u30fc\u30c9\u3001\u6ce8\u610f\u70b9\u3092\u542b\u3081\u3066\u521d\u5fc3\u8005\u306b\u3082\u7406\u89e3\u3067\u304d\u308b\u3088\u3046\u8aac\u660e\u3057\u307e\u3059\u3002","breadcrumb":{"@id":"https:\/\/www.silicloud.com\/ja\/blog\/%e3%82%b9%e3%83%97%e3%83%aa%e3%83%b3%e3%82%b0%e3%83%96%e3%83%bc%e3%83%88%e3%83%a2%e3%83%b3%e3%82%b4db\/#breadcrumb"},"inLanguage":"ja","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/ja\/blog\/%e3%82%b9%e3%83%97%e3%83%aa%e3%83%b3%e3%82%b0%e3%83%96%e3%83%bc%e3%83%88%e3%83%a2%e3%83%b3%e3%82%b4db\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/ja\/blog\/%e3%82%b9%e3%83%97%e3%83%aa%e3%83%b3%e3%82%b0%e3%83%96%e3%83%bc%e3%83%88%e3%83%a2%e3%83%b3%e3%82%b4db\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.silicloud.com\/ja\/blog\/"},{"@type":"ListItem","position":2,"name":"\u30b9\u30d7\u30ea\u30f3\u30b0\u30d6\u30fc\u30c8\u30e2\u30f3\u30b4DB"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/ja\/blog\/#website","url":"https:\/\/www.silicloud.com\/ja\/blog\/","name":"Blog - Silicon Cloud","description":"","inLanguage":"ja"},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/ja\/blog\/#\/schema\/person\/aeb60a7861f2f002b54c66bd65bc6c27","name":"\u82bd\u4f9d, \u96e8\u591c","image":{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/www.silicloud.com\/ja\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/6305fe5cabc2b854c1208975a47fbf3f8cef3f7cd775b94dceedbe59b74a8010?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/6305fe5cabc2b854c1208975a47fbf3f8cef3f7cd775b94dceedbe59b74a8010?s=96&d=mm&r=g","caption":"\u82bd\u4f9d, \u96e8\u591c"},"url":"https:\/\/www.silicloud.com\/ja\/blog\/author\/meiamaya\/"},{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/www.silicloud.com\/ja\/blog\/%e3%82%b9%e3%83%97%e3%83%aa%e3%83%b3%e3%82%b0%e3%83%96%e3%83%bc%e3%83%88%e3%83%a2%e3%83%b3%e3%82%b4db\/#local-main-organization-logo","url":"","contentUrl":"","caption":"Blog - Silicon Cloud"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/ja\/blog\/wp-json\/wp\/v2\/posts\/797","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/ja\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/ja\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/ja\/blog\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/ja\/blog\/wp-json\/wp\/v2\/comments?post=797"}],"version-history":[{"count":1,"href":"https:\/\/www.silicloud.com\/ja\/blog\/wp-json\/wp\/v2\/posts\/797\/revisions"}],"predecessor-version":[{"id":45133,"href":"https:\/\/www.silicloud.com\/ja\/blog\/wp-json\/wp\/v2\/posts\/797\/revisions\/45133"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/ja\/blog\/wp-json\/wp\/v2\/media?parent=797"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/ja\/blog\/wp-json\/wp\/v2\/categories?post=797"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/ja\/blog\/wp-json\/wp\/v2\/tags?post=797"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}