{"id":2841,"date":"2017-02-27T07:19:19","date_gmt":"2017-02-27T15:19:19","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=2841"},"modified":"2020-02-16T18:00:29","modified_gmt":"2020-02-17T02:00:29","slug":"joining-nosql-documents-mongodb-query-language-vs-couchbase-n1ql","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/ko\/joining-nosql-documents-mongodb-query-language-vs-couchbase-n1ql\/","title":{"rendered":"NoSQL \ub370\uc774\ud130 \uc870\uc778: MongoDB \ucffc\ub9ac \uc5b8\uc5b4 \ub300 Couchbase N1QL"},"content":{"rendered":"<p>NoSQL\uacfc \uad00\ub828\ud558\uc5ec \uac00\uc7a5 \uc790\uc8fc \ubc1b\ub294 \uc9c8\ubb38 \uc911 \ud558\ub098\ub294 \uc5ec\ub7ec \ubb38\uc11c\uc758 \ub370\uc774\ud130\ub97c \ub2e8\uc77c \ucffc\ub9ac \uacb0\uacfc\ub85c \uc870\uc778\ud558\ub294 \ubb38\uc81c\uc785\ub2c8\ub2e4. \uc774 \uc9c8\ubb38\uc740 RDBMS \uac1c\ubc1c\uc790\ub4e4\ub85c\ubd80\ud130 \ub354 \uc790\uc8fc \uc81c\uae30\ub418\uc9c0\ub9cc, \uc800\ub294 NoSQL \uac1c\ubc1c\uc790\ub4e4\ub85c\ubd80\ud130\ub3c4 \uc774 \uc9c8\ubb38\uc744 \ubc1b\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ub370\uc774\ud130 \uc870\uc778\uc740 \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub9c8\ub2e4 \ub2e4\ub974\uac8c \uc218\ud589\ub418\uba70, \uadf8 \uc911 \uc77c\ubd80\ub294 \ub370\uc774\ud130\ubca0\uc774\uc2a4 \uacc4\uce35\uc774 \uc544\ub2cc \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \uacc4\uce35\uc744 \ud1b5\ud574 \uc218\ud589\ud574\uc57c \ud569\ub2c8\ub2e4. \ub370\uc774\ud130\ubca0\uc774\uc2a4 \uae30\uc220 \uac04\uc758 \uba87 \uac00\uc9c0 \ub370\uc774\ud130 \uc870\uc778 \uc635\uc158\uc744 \uc0b4\ud3b4\ubcf4\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<p><!--more--><\/p>\n<p>\uc774 \ube14\ub85c\uadf8\uc5d0\uc11c\ub294 MongoDB $lookup \uc5f0\uc0b0\uc790\ub97c \uc0ac\uc6a9\ud558\uc5ec NoSQL \ubb38\uc11c\ub97c \uc870\uc778\ud558\ub294 \ud504\ub85c\uc138\uc2a4\ub97c \ub2e4\uc74c\uacfc \ube44\uad50\ud574\ubcf4\uaca0\uc2b5\ub2c8\ub2e4. <a href=\"https:\/\/www.couchbase.com\/blog\/ko\/\" target=\"_blank\" rel=\"noopener noreferrer\">\uce74\uc6b0\uce58\ubca0\uc774\uc2a4<\/a>\uc758 \ubcf4\ub2e4 \uc9c1\uad00\uc801\uc778 N1QL \ucffc\ub9ac \uc5b8\uc5b4\uc785\ub2c8\ub2e4.<\/p>\n<h2>\uc0d8\ud50c \ub370\uc774\ud130<\/h2>\n<p>\uc774 \uc608\uc81c\uc5d0\uc11c\ub294 \ub450 \uac1c\uc758 \uc0d8\ud50c \ubb38\uc11c\ub97c \uae30\ubc18\uc73c\ub85c MongoDB\uc640 Couchbase\ub97c \ubaa8\ub450 \uc0ac\uc6a9\ud558\uaca0\uc2b5\ub2c8\ub2e4. \uc77c\ubc18\uc801\uc778 \uc8fc\ubb38 \ubc0f \uc7ac\uace0 \uc608\uc81c\ub85c \uc791\uc5c5\ud55c\ub2e4\uace0 \uac00\uc815\ud574 \ubcf4\uaca0\uc2b5\ub2c8\ub2e4. \uc778\ubca4\ud1a0\ub9ac\uc758 \uacbd\uc6b0 \ubb38\uc11c\ub294 \ub2e4\uc74c\uacfc \uac19\uc774 \ubcf4\uc77c \uc218 \uc788\uc2b5\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:default highlight:0 decode:true\" title=\"\uc81c\ud488 \ubb38\uc11c\">{\r\n    \"id\": \"product-1\",\r\n    \"type\": \"product\",\r\n    \"name\": \"Pokemon Red\",\r\n    \"price\": 29.99\r\n}<\/pre>\n<p>\uc704 \ubb38\uc11c\ub294 \ud3c9\uba74\uc801\uc774\uc9c0\ub9cc \ud2b9\uc815 \uc81c\ud488\uc744 \uc81c\ub300\ub85c \uc124\uba85\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc5ec\uae30\uc5d0\ub294 \uc870\uc778 \ud504\ub85c\uc138\uc2a4 \uc911\uc5d0 \uad00\ub828\ub418\ub294 \uace0\uc720 ID\uac00 \uc788\uc2b5\ub2c8\ub2e4. \uc8fc\ubb38\uc758 \uacbd\uc6b0 \ub2e4\uc74c\uacfc \uac19\uc740 \ubb38\uc11c\uac00 \uc788\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:default highlight:0 decode:true\" title=\"\uc8fc\ubb38 \ubb38\uc11c\">{\r\n    \"id\": \"order-1\",\r\n    \"type\": \"order\",\r\n    \"products\": [\r\n        {\r\n            \"product_id\": \"product-1\",\r\n            \"quantity\": 2\r\n        }\r\n    ]\r\n}<\/pre>\n<p>\uc5ec\uae30\uc11c\ub294 MongoDB\uc640 Couchbase\ub97c \ubaa8\ub450 \uc0ac\uc6a9\ud558\uc5ec \uc774 \ub450 \ubb38\uc11c\ub97c \ub2e8\uc77c \ucffc\ub9ac\ub85c \uc870\uc778\ud558\ub294 \uac83\uc774 \ubaa9\ud45c\uc785\ub2c8\ub2e4. \uadf8\ub7ec\ub098 \ucffc\ub9ac \uc5b8\uc5b4\uc640\ub294 \ubcc4\uac1c\ub85c, \uc774\ub7ec\ud55c \ubb38\uc11c\ub294 \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \uacc4\uce35\uc744 \ud1b5\ud574 \uc5b8\uc81c\ub4e0\uc9c0 \uc5ec\ub7ec \ucffc\ub9ac\ub97c \ud1b5\ud574 \uc870\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ud558\uc9c0\ub9cc \uc774\uac83\uc774 \uc6b0\ub9ac\uac00 \uc6d0\ud558\ub294 \uacb0\uacfc\ub294 \uc544\ub2d9\ub2c8\ub2e4.<\/p>\n<h3>MongoDB\uc640 $lookup \uc5f0\uc0b0\uc790\ub85c \ubb38\uc11c \uc870\uc778\ud558\uae30<\/h3>\n<p>\ucd5c\uc2e0 \ubc84\uc804\uc758 MongoDB\uc5d0\uc11c \uc870\uc778 \ucffc\ub9ac\uc5d0\ub294 <code>$\uc870\ud68c<\/code> \uc5f0\uc0b0\uc790\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc9d1\uacc4 \ucffc\ub9ac\uc758 \uc77c\ubd80\ub85c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ubabd\uace0DB <a href=\"https:\/\/docs.mongodb.com\/manual\/reference\/operator\/aggregation\/lookup\/\" target=\"_blank\" rel=\"noopener noreferrer\">\ubb38\uc11c<\/a>\ub85c \uc124\uc815\ud558\uba74 \uc774 \uc5f0\uc0b0\uc790\ub294 \ub2e4\uc74c\uacfc \uac19\uc774 \uc218\ud589\ub429\ub2c8\ub2e4:<\/p>\n<blockquote><p>\ub3d9\uc77c\ud55c \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0\uc11c \uc0e4\ub529\ub418\uc9c0 \uc54a\uc740 \uceec\ub809\uc158\uc5d0 \uc67c\ucabd \uc678\ubd80 \uc870\uc778\uc744 \uc218\ud589\ud558\uc5ec \"\uc870\uc778\ub41c\" \uceec\ub809\uc158\uc758 \ubb38\uc11c\ub97c \ud544\ud130\ub9c1\ud558\uc5ec \ucc98\ub9ac\ud569\ub2c8\ub2e4. $lookup \ub2e8\uacc4\uc5d0\uc11c\ub294 \uc785\ub825 \ubb38\uc11c\uc758 \ud544\ub4dc\uc640 \"\uc870\uc778\ub41c\" \uceec\ub809\uc158\uc758 \ubb38\uc11c \ud544\ub4dc \uac04\uc5d0 \ub3d9\uc77c\uc131 \uc77c\uce58\ub97c \uc218\ud589\ud569\ub2c8\ub2e4.<\/p><\/blockquote>\n<p>\uc0ac\uc6a9\ud558\ub824\uba74 <code>$\uc870\ud68c<\/code> \uc5f0\uc0b0\uc790\ub97c \uc0ac\uc6a9\ud558\uba74 \ub2e4\uc74c\uacfc \uac19\uc740 \uacb0\uacfc\uac00 \ub098\ud0c0\ub0a9\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:default highlight:0 decode:true\" title=\"MongoDB \uc9d1\uacc4 \ucffc\ub9ac\">db.collection.aggregate([\r\n    {\r\n       $lookup:\r\n         {\r\n           from: &lt;collection to join&gt;,\r\n           localField: &lt;field from the input documents&gt;,\r\n           foreignField: &lt;field from the documents of the \"from\" collection&gt;,\r\n           as: &lt;output array field&gt;\r\n         }\r\n    }\r\n])<\/pre>\n<p>\uc774\uc81c \uc774\uac83\uc740 \ud6cc\ub96d\ud558\uc9c0\ub9cc \ubc30\uc5f4\uc5d0\uc11c \ubc1c\uacac\ub418\ub294 \uad00\uacc4\uc5d0\uc11c\ub294 \uc791\ub3d9\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \uc989, \ubc30\uc5f4\uc758 <code>$\uc870\ud68c<\/code> \uc791\uc5c5\uc5d0 \ucc38\uc5ec\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. <code>product_id<\/code> \uc5d0\uc11c \ucc3e\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4. <code>\uc81c\ud488<\/code> \ubc30\uc5f4\uc744 \ub2e4\ub978 \ubb38\uc11c\uc5d0 \ucd94\uac00\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \ub300\uc2e0 \ubc30\uc5f4\uc744 \uba3c\uc800 '\uc5b8\uc640\uc778\ub4dc' \ub610\ub294 '\uc5b8\ub124\uc2a4\ud2b8'\ud574\uc57c \ud558\ubbc0\ub85c \ucffc\ub9ac\uac00 \ub354\uc6b1 \ubcf5\uc7a1\ud574\uc9d1\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:default highlight:0 decode:true\" title=\"MongoDB \ud480\uae30 \ud6c4 \uc870\ud68c\">db.orders.aggregate([\r\n    { $unwind: \"$products\" },\r\n    {\r\n        $lookup: {\r\n            from: \"products\",\r\n            localField: \"products.product_id\",\r\n            foreignField: \"_id\",\r\n            as: \"productObjects\"\r\n        }\r\n    }\r\n])<\/pre>\n<p>\uadf8\ub9ac\uace0 <code>$unwind<\/code> \uc5f0\uc0b0\uc790\ub294 \ubc30\uc5f4\uc744 \ud3c9\ud3c9\ud558\uac8c \ud55c \ub2e4\uc74c \uc0dd\uc131\ub41c \uc774\uc81c \ud3c9\ud3c9\ud574\uc9c4 \uac1c\uccb4\uc5d0 \ub300\ud574 \uc870\uc778\uc744 \uc218\ud589\ud569\ub2c8\ub2e4. \uc774\ub7ec\ud55c \ucffc\ub9ac\uc758 \uacb0\uacfc\ub294 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">{\r\n    \"_id\" : ObjectId(\"58a3869acbf64c4ace55e713\"),\r\n    \"products\" : {\r\n        \"product_id\" : ObjectId(\"58a3851b2f14a900caa7a731\"),\r\n        \"quantity\" : 2\r\n    },\r\n    \"productObjects\" : [\r\n        {\r\n            \"_id\" : ObjectId(\"58a3851b2f14a900caa7a731\"),\r\n            \"name\" : \"Pokemon Red\",\r\n            \"price\" : 29.99\r\n        }\r\n    ]\r\n}<\/pre>\n<p>\ubc30\uc5f4\uc5d0 \ucc38\uc870\uac00 \ub450 \uac1c \uc774\uc0c1 \uc788\uc5c8\ub2e4\uba74 \ub354 \ub9ce\uc740 \uacb0\uacfc\uac00 \ubc18\ud658\ub418\uc5c8\uc744 \uac83\uc785\ub2c8\ub2e4. \uadf8\ub7ec\ub098 \ubc18\ud658\ub418\ub294 \uacb0\uacfc\ub294 \uadf8\ub2e4\uc9c0 \ub9e4\ub825\uc801\uc774\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \uc5ec\uc804\ud788 \uc774\uc804 <code>\uc81c\ud488<\/code> \uac1d\uccb4\uc5d0\uc11c \uc774\uc81c <code>\uc81c\ud488 \uac1c\uccb4<\/code> \ubc30\uc5f4\uc744 \ucd94\uac00\ud569\ub2c8\ub2e4. \ub370\uc774\ud130 \uc2a4\ud2b8\ub9bc\uc5d0 \ub300\ud55c \ucd94\uac00 \uc870\uc791\uc774 \ud544\uc694\ud569\ub2c8\ub2e4.<\/p>\n<p>\uadf8\ub9ac\uace0 <code>\uc81c\ud488 \uac1c\uccb4<\/code> \ubc30\uc5f4\uc744 \"\uc5b8\uc640\uc778\ub4dc\"\ud55c \ub2e4\uc74c \uc6d0\ud558\ub294 \ubc29\uc2dd\uc73c\ub85c \uc7ac\uad6c\uc131\ud574\uc57c \ud569\ub2c8\ub2e4. \uc774\ub97c \uc704\ud574\uc11c\ub294 \ub2e4\uc74c\uc744 \uc218\ud589\ud558\uba74 \ub429\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">db.orders.aggregate([\r\n    { $unwind: \"$products\" },\r\n    {\r\n        $lookup: {\r\n            from: \"products\",\r\n            localField: \"products.product_id\",\r\n            foreignField: \"_id\",\r\n            as: \"productObjects\"\r\n        }\r\n    },\r\n    { $unwind: \"$productObjects\"},\r\n    {\r\n        $project: {\r\n            products: {\r\n                \"quantity\": \"$products.quantity\",\r\n                \"name\": \"$productObjects.name\",\r\n                \"price\": \"$productObjects.price\"\r\n            }\r\n        }\r\n    }\r\n])<\/pre>\n<p>\ucc38\uace0 <code>\uc9d1\uacc4<\/code> \ucffc\ub9ac\ub294 \uc774\uc81c \ub354 \ubcf5\uc7a1\ud574\uc9c0\uace0 \uc788\uc2b5\ub2c8\ub2e4. \uc870\uc778\uc744 \uc218\ud589\ud55c \ud6c4 \uacb0\uacfc\ub97c \"\uc5b8\uc640\uc778\ub4dc\"\ud55c \ub2e4\uc74c \ub2e4\uc74c\uc744 \uc0ac\uc6a9\ud558\uc5ec \uacb0\uacfc\ub97c \uc7ac\uad6c\uc131\ud569\ub2c8\ub2e4. <code>$\ud504\ub85c\uc81d\ud2b8<\/code> \uc5f0\uc0b0\uc790\uc785\ub2c8\ub2e4.<\/p>\n<p>\uc774 \uc2dc\uc810\uc5d0\uc11c \uacb0\uacfc\ub97c \uadf8\ub8f9\ud654\ud558\ub294 \ub4f1 \uacb0\uacfc\uc5d0 \ub300\ud55c \ucd94\uac00 \uc870\uc791\uc744 \uc218\ud589\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. <code>\uc81c\ud488<\/code> \uac1d\uccb4\uac00 \ub2e4\uc2dc \ub2e8\uc77c \ubc30\uc5f4\uc774 \ub429\ub2c8\ub2e4. \ub370\uc774\ud130 \uc9d1\ud569\uc744 \uc870\uc791\ud560 \ub54c\ub9c8\ub2e4 \ub354 \ub9ce\uc740 \uc9d1\uacc4 \ucf54\ub4dc\uac00 \ud544\uc694\ud558\ubbc0\ub85c \uc27d\uac8c \uc9c0\uc800\ubd84\ud558\uace0 \ubcf5\uc7a1\ud574\uc9c0\uba70 \uc77d\uae30 \uc5b4\ub824\uc6cc\uc9c8 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uc774 \ubd80\ubd84\uc5d0\uc11c Couchbase N1QL\uc744 \uc0ac\uc6a9\ud558\uba74 \ud6e8\uc52c \ub354 \uc990\uac81\uac8c \uc791\uc5c5\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<h3>\uce74\uc6b0\uce58\ubca0\uc774\uc2a4\uc640 N1QL\uc744 \uc0ac\uc6a9\ud558\uc5ec NoSQL \ubb38\uc11c \uc870\uc778\ud558\uae30<\/h3>\n<p>MongoDB\uc5d0 \uc0ac\uc6a9\ud55c \uac83\uacfc \ub3d9\uc77c\ud55c \ubb38\uc11c \uc608\uc81c\ub97c \uc0ac\uc6a9\ud558\uaca0\uc2b5\ub2c8\ub2e4. \uc774\ubc88\uc5d0\ub294 \uc791\uc5c5\uc744 \uc644\ub8cc\ud558\uae30 \uc704\ud574 N1QL\ub85c SQL \ucffc\ub9ac\ub97c \uc791\uc131\ud574 \ubcf4\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uac00\uc7a5 \uba3c\uc800 \ub5a0\uc624\ub974\ub294 \uac83\uc740 \uc544\ub9c8\ub3c4 <code>JOIN<\/code> \ub97c \uc785\ub825\ud569\ub2c8\ub2e4. \ucffc\ub9ac\ub294 \ub2e4\uc74c\uacfc \uac19\uc774 \ubcf4\uc77c \uc218 \uc788\uc2b5\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">SELECT orders.*, product\r\nFROM example AS orders\r\nJOIN example AS product ON KEYS orders.products[*].product_id\r\nWHERE orders.type = 'order'<\/pre>\n<p>\uc704\uc758 \uc608\uc5d0\uc11c\ub294 \ub450 \ubb38\uc11c\uac00 \ubaa8\ub450 \ub3d9\uc77c\ud55c Couchbase \ubc84\ud0b7\uc5d0 \uc874\uc7ac\ud569\ub2c8\ub2e4. A <code>JOIN<\/code> \ubb38\uc11c ID\uc5d0 \ub300\ud55c <code>product_id<\/code> \uac12\uc5d0 \uc788\ub294 <code>\uc81c\ud488<\/code> \ubc30\uc5f4\uc744 \uc0ac\uc6a9\ud569\ub2c8\ub2e4. \uc704\uc758 \ucffc\ub9ac\ub294 \ub2e4\uc74c\uacfc \uac19\uc740 \uacb0\uacfc\ub97c \ubc18\ud658\ud569\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">[\r\n  {\r\n    \"id\": \"order-1\",\r\n    \"product\": {\r\n      \"id\": \"product-1\",\r\n      \"name\": \"Pokemon Red\",\r\n      \"price\": 29.99,\r\n      \"type\": \"product\"\r\n    },\r\n    \"products\": [\r\n      {\r\n        \"product_id\": \"product-1\",\r\n        \"quantity\": 2\r\n      }\r\n    ],\r\n    \"type\": \"order\"\r\n  }\r\n]<\/pre>\n<p>\ubabd\uace0DB\uc640 \ub9c8\ucc2c\uac00\uc9c0\ub85c, \ubaa8\ub4e0 \ud56d\ubaa9\uc5d0 \ub300\ud55c \uacb0\uacfc\uac00 \uc788\uc2b5\ub2c8\ub2e4. <code>\uc81c\ud488<\/code> \ubc30\uc5f4\uc744 \ucc3e\uc544\uc57c \ud569\ub2c8\ub2e4. \uacf5\uc815\ud558\uac8c \ub9d0\ud558\uc790\uba74, N1QL \ubc84\uc804\uc774 \uc791\uc131\ud558\uae30\ub294 \ub354 \uc26c\uc6e0\uc9c0\ub9cc, \uc774 \uc2dc\uc810\uc5d0\uc11c \ubabd\uace0DB \ucffc\ub9ac \uc5b8\uc5b4\ubcf4\ub2e4 \ubc18\ub4dc\uc2dc \ub354 \uc5b4\ub824\uc6b4 \uac83\uc740 \uc544\ub2c8\uc5c8\uc2b5\ub2c8\ub2e4. \ub370\uc774\ud130\ub97c \ub354 \ub9ce\uc774 \uc870\uc791\ud560\uc218\ub85d Couchbase\ub294 \uadf8\uc5d0 \ube44\ud574 \ud6e8\uc52c \ub354 \uc26c\uc6cc\uc9d1\ub2c8\ub2e4.<\/p>\n<p>\uc608\ub97c \ub4e4\uc5b4 \uacb0\uacfc\ub97c \uc815\ub9ac\ud558\uace0 \uc2f6\ub2e4\uace0 \uac00\uc815\ud574 \ubcf4\uaca0\uc2b5\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">SELECT orders.id, orders.type, OBJECT_PUT(product, \"quantity\", products.quantity) AS product\r\nFROM example AS orders\r\nUNNEST orders.products AS products\r\nJOIN example AS product ON KEYS products.product_id\r\nWHERE orders.type = 'order'<\/pre>\n<p>\uc704\uc5d0\uc11c \uc218\ud589\ud558\ub294 \uc791\uc5c5\uc5d0\ub294 \uba87 \uac00\uc9c0 \ud070 \ucc28\uc774\uc810\uc774 \uc788\uc9c0\ub9cc, \uc218\ud589 \ubc29\ubc95\uc5d0\ub294 \uc57d\uac04\uc758 \ucc28\uc774\uac00 \uc788\uc2b5\ub2c8\ub2e4. \ubc30\uc5f4\uc5d0 \uc9c1\uc811 \uc870\uc778\ud558\ub294 \ub300\uc2e0, \uba3c\uc800 MongoDB\uc5d0\uc11c \ubcf8 \uac83\uacfc \uac19\uc774 \ubc30\uc5f4\uc744 \ud3c9\ud3c9\ud558\uac8c \ud558\uac70\ub098 \"\uc911\ucca9 \ud574\uc81c\"\ud569\ub2c8\ub2e4. <code>$unwind<\/code> \uc5f0\uc0b0\uc790\ub97c \uc0ac\uc6a9\ud569\ub2c8\ub2e4. \uc774\uc81c \uac01\uac01\uc758 \ud3c9\ud3c9\ud55c \uacb0\uacfc\uc5d0\uc11c \uc870\uc778\uc774 \uc218\ud589\ub429\ub2c8\ub2e4. \ub9c8\uc9c0\ub9c9\uc73c\ub85c <code>\uc218\ub7c9<\/code> \ub97c \uc0c8 \uac1c\uccb4\uc5d0 \ucd94\uac00\ud569\ub2c8\ub2e4.<\/p>\n<p>\uc704 \ucffc\ub9ac\uc5d0 \ub300\ud55c \uacb0\uacfc\ub294 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">[\r\n  {\r\n    \"id\": \"order-1\",\r\n    \"product\": {\r\n      \"id\": \"product-1\",\r\n      \"name\": \"Pokemon Red\",\r\n      \"price\": 29.99,\r\n      \"quantity\": 2,\r\n      \"type\": \"product\"\r\n    },\r\n    \"type\": \"order\"\r\n  }\r\n]<\/pre>\n<p>\uc6d0\ubcf8 <code>\uc81c\ud488<\/code> \ubc30\uc5f4\uc5d0 \ub458 \uc774\uc0c1\uc758 \uc81c\ud488 \ucc38\uc870\uac00 \ud3ec\ud568\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4. \ubc30\uc5f4\uc5d0 \ub530\ub77c \uc5ec\ub7ec \uac1c\uc758 \uac1d\uccb4\ub97c \ubc18\ud658\ud558\ub294 \ub300\uc2e0 <code>JOIN<\/code> \uae30\uc900\uc5d0 \ub530\ub77c \uc6d0\ub798 \ubc30\uc5f4\uc744 \ub2e4\uc2dc \ud328\ud0b9\ud558\ub294 \uac83\uc774 \ud569\ub9ac\uc801\uc77c \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">SELECT orders.id, orders.type, ARRAY_AGG(OBJECT_PUT(product, \"quantity\", products.quantity)) AS products\r\nFROM example AS orders\r\nUNNEST orders.products AS products\r\nJOIN example AS product ON KEYS products.product_id\r\nWHERE orders.type = 'order'\r\nGROUP BY orders<\/pre>\n<p>\uc704\uc758 \ucffc\ub9ac\uc5d0\uc11c\ub294 \ub2e4\uc74c\uacfc \uac19\uc740 \ud56d\ubaa9\ub9cc \ucd94\uac00\ud588\uc2b5\ub2c8\ub2e4. <code>ARRAY_AGG<\/code> \ubc0f <code>\uadf8\ub8f9 \uae30\uc900<\/code>\ub85c \ud45c\uc2dc\ub418\uc9c0\ub9cc \uacb0\uacfc\uc801\uc73c\ub85c \uac01 \uc870\uc778\ub41c \ubb38\uc11c\ub294 <code>\uc81c\ud488<\/code> \ubc30\uc5f4\uc744 \uc0ac\uc6a9\ud569\ub2c8\ub2e4.<\/p>\n<p>\uc2e4\uc81c <code>JOIN<\/code> \uc5f0\uc0b0\uc790\ub97c \uc0ac\uc6a9\ud558\uc2dc\ub098\uc694? \ub300\uc2e0 SQL \ud558\uc704 \ucffc\ub9ac\ub97c \uc0ac\uc6a9\ud574 \ubcf4\uc138\uc694.<\/p>\n<h2>\uacb0\ub860<\/h2>\n<p>NoSQL\uc5d0\uc11c \ub370\uc774\ud130 \uc870\uc778\uc740 \uc219\ub828\ub41c RDBMS \ubca0\ud14c\ub791 \uac1c\ubc1c\uc790\ub4e4\uc5d0\uac8c \ub9e4\uc6b0 \uc778\uae30 \uc788\ub294 \uad00\uc2ec\uc0ac\uc785\ub2c8\ub2e4. MongoDB\ub294 \ub9e4\uc6b0 \uc778\uae30 \uc788\ub294 NoSQL \uae30\uc220\uc774\uae30 \ub54c\ubb38\uc5d0 Couchbase\uac00 \ubb38\uc11c \uc870\uc778\uc744 \ucc98\ub9ac\ud558\ub294 \ubc29\uc2dd\uacfc \ube44\uad50\ud558\ub294 \ub370 \uc0ac\uc6a9\ud558\uba74 \uc88b\uaca0\ub2e4\uace0 \uc0dd\uac01\ud588\uc2b5\ub2c8\ub2e4. \uac00\ubcbc\uc6b4 \uc791\uc5c5\uc6a9, <code>$\uc870\ud68c<\/code> \uc5f0\uc0b0\uc790\ub294 \uacac\ub51c \uc218 \uc788\uc9c0\ub9cc, MongoDB\uc758 \uc870\uc778 \ucffc\ub9ac\uac00 \ub354 \ubcf5\uc7a1\ud574\uc9c0\uba74 \ud55c \uac78\uc74c \ubb3c\ub7ec\uc11c\uc57c \ud560 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4. N1QL\uc744 \uc0ac\uc6a9\ud558\uba74 \uc870\uc778 \uc5f0\uc0b0\uc774 \ud3ec\ud568\ub41c \ubcf5\uc7a1\ud55c \ucffc\ub9ac\ub97c \ub9e4\uc6b0 \uc27d\uac8c \uc791\uc131\ud560 \uc218 \uc788\uc73c\uba70 \ucffc\ub9ac\uac00 \uc5bc\ub9c8\ub098 \ubcf5\uc7a1\ud55c\uc9c0\uc5d0 \uad00\uacc4\uc5c6\uc774 \uc27d\uac8c \uc720\uc9c0\ub429\ub2c8\ub2e4.<\/p>\n<p>N1QL \ubc0f Couchbase\uc5d0 \ub300\ud55c \uc790\uc138\ud55c \ub0b4\uc6a9\uc740 \ub2e4\uc74c\uc744 \ucc38\uc870\ud558\uc138\uc694. <a href=\"https:\/\/developer.couchbase.com\" target=\"_blank\" rel=\"noopener noreferrer\">\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \uac1c\ubc1c\uc790 \ud3ec\ud138<\/a>.<\/p>","protected":false},"excerpt":{"rendered":"<p>One of the most frequent questions I receive when it comes to NoSQL is on the subject of joining data from multiple documents into a single query result. While this question is brought up more frequently from RDBMS developers, I [&hellip;]<\/p>","protected":false},"author":63,"featured_media":2787,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1815,1816,1812],"tags":[1309,1861],"ppma_author":[9032],"class_list":["post-2841","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-best-practices-and-tutorials","category-couchbase-server","category-n1ql-query","tag-mongodb","tag-unnest"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.5 (Yoast SEO v26.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Joining NoSQL Data: MongoDB Query Language vs Couchbase N1QL<\/title>\n<meta name=\"description\" content=\"Learn the secrets of joining NoSQL documents in this tutorial featuring the MongoDB Query Language and Couchbase&#039;s intuitive N1QL query language.\" \/>\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.couchbase.com\/blog\/ko\/joining-nosql-documents-mongodb-query-language-vs-couchbase-n1ql\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Joining NoSQL Data: MongoDB Query Language vs Couchbase N1QL\" \/>\n<meta property=\"og:description\" content=\"Learn the secrets of joining NoSQL documents in this tutorial featuring the MongoDB Query Language and Couchbase&#039;s intuitive N1QL query language.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/ko\/joining-nosql-documents-mongodb-query-language-vs-couchbase-n1ql\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/thepolyglotdeveloper\" \/>\n<meta property=\"article:published_time\" content=\"2017-02-27T15:19:19+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-02-17T02:00:29+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/02\/mongo-to-couchbase.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1100\" \/>\n\t<meta property=\"og:image:height\" content=\"389\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Nic Raboy, Developer Advocate, Couchbase\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@nraboy\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Nic Raboy, Developer Advocate, Couchbase\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/joining-nosql-documents-mongodb-query-language-vs-couchbase-n1ql\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/joining-nosql-documents-mongodb-query-language-vs-couchbase-n1ql\/\"},\"author\":{\"name\":\"Nic Raboy, Developer Advocate, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/bb545ebe83bb2d12f91095811d0a72e1\"},\"headline\":\"Joining NoSQL Data: MongoDB Query Language vs Couchbase N1QL\",\"datePublished\":\"2017-02-27T15:19:19+00:00\",\"dateModified\":\"2020-02-17T02:00:29+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/joining-nosql-documents-mongodb-query-language-vs-couchbase-n1ql\/\"},\"wordCount\":975,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/joining-nosql-documents-mongodb-query-language-vs-couchbase-n1ql\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/02\/mongo-to-couchbase.png\",\"keywords\":[\"mongodb\",\"unnest\"],\"articleSection\":[\"Best Practices and Tutorials\",\"Couchbase Server\",\"SQL++ \/ N1QL Query\"],\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/joining-nosql-documents-mongodb-query-language-vs-couchbase-n1ql\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/joining-nosql-documents-mongodb-query-language-vs-couchbase-n1ql\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/joining-nosql-documents-mongodb-query-language-vs-couchbase-n1ql\/\",\"name\":\"Joining NoSQL Data: MongoDB Query Language vs Couchbase N1QL\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/joining-nosql-documents-mongodb-query-language-vs-couchbase-n1ql\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/joining-nosql-documents-mongodb-query-language-vs-couchbase-n1ql\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/02\/mongo-to-couchbase.png\",\"datePublished\":\"2017-02-27T15:19:19+00:00\",\"dateModified\":\"2020-02-17T02:00:29+00:00\",\"description\":\"Learn the secrets of joining NoSQL documents in this tutorial featuring the MongoDB Query Language and Couchbase's intuitive N1QL query language.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/joining-nosql-documents-mongodb-query-language-vs-couchbase-n1ql\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/joining-nosql-documents-mongodb-query-language-vs-couchbase-n1ql\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/joining-nosql-documents-mongodb-query-language-vs-couchbase-n1ql\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/02\/mongo-to-couchbase.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/02\/mongo-to-couchbase.png\",\"width\":1100,\"height\":389},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/joining-nosql-documents-mongodb-query-language-vs-couchbase-n1ql\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Joining NoSQL Data: MongoDB Query Language vs Couchbase N1QL\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ko-KR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/bb545ebe83bb2d12f91095811d0a72e1\",\"name\":\"Nic Raboy, Developer Advocate, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/8863514d8bed0cf6080f23db40e00354\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g\",\"caption\":\"Nic Raboy, Developer Advocate, Couchbase\"},\"description\":\"Nic Raboy is an advocate of modern web and mobile development technologies. He has experience in Java, JavaScript, Golang and a variety of frameworks such as Angular, NativeScript, and Apache Cordova. Nic writes about his development experiences related to making web and mobile development easier to understand.\",\"sameAs\":[\"https:\/\/www.thepolyglotdeveloper.com\",\"https:\/\/www.facebook.com\/thepolyglotdeveloper\",\"https:\/\/x.com\/nraboy\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/ko\/author\/nic-raboy-2\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"NoSQL \ub370\uc774\ud130 \uc870\uc778: MongoDB \ucffc\ub9ac \uc5b8\uc5b4 \ub300 Couchbase N1QL","description":"Learn the secrets of joining NoSQL documents in this tutorial featuring the MongoDB Query Language and Couchbase's intuitive N1QL query language.","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.couchbase.com\/blog\/ko\/joining-nosql-documents-mongodb-query-language-vs-couchbase-n1ql\/","og_locale":"ko_KR","og_type":"article","og_title":"Joining NoSQL Data: MongoDB Query Language vs Couchbase N1QL","og_description":"Learn the secrets of joining NoSQL documents in this tutorial featuring the MongoDB Query Language and Couchbase's intuitive N1QL query language.","og_url":"https:\/\/www.couchbase.com\/blog\/ko\/joining-nosql-documents-mongodb-query-language-vs-couchbase-n1ql\/","og_site_name":"The Couchbase Blog","article_author":"https:\/\/www.facebook.com\/thepolyglotdeveloper","article_published_time":"2017-02-27T15:19:19+00:00","article_modified_time":"2020-02-17T02:00:29+00:00","og_image":[{"width":1100,"height":389,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/02\/mongo-to-couchbase.png","type":"image\/png"}],"author":"Nic Raboy, Developer Advocate, Couchbase","twitter_card":"summary_large_image","twitter_creator":"@nraboy","twitter_misc":{"Written by":"Nic Raboy, Developer Advocate, Couchbase","Est. reading time":"6\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/joining-nosql-documents-mongodb-query-language-vs-couchbase-n1ql\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/joining-nosql-documents-mongodb-query-language-vs-couchbase-n1ql\/"},"author":{"name":"Nic Raboy, Developer Advocate, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/bb545ebe83bb2d12f91095811d0a72e1"},"headline":"Joining NoSQL Data: MongoDB Query Language vs Couchbase N1QL","datePublished":"2017-02-27T15:19:19+00:00","dateModified":"2020-02-17T02:00:29+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/joining-nosql-documents-mongodb-query-language-vs-couchbase-n1ql\/"},"wordCount":975,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/joining-nosql-documents-mongodb-query-language-vs-couchbase-n1ql\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/02\/mongo-to-couchbase.png","keywords":["mongodb","unnest"],"articleSection":["Best Practices and Tutorials","Couchbase Server","SQL++ \/ N1QL Query"],"inLanguage":"ko-KR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/joining-nosql-documents-mongodb-query-language-vs-couchbase-n1ql\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/joining-nosql-documents-mongodb-query-language-vs-couchbase-n1ql\/","url":"https:\/\/www.couchbase.com\/blog\/joining-nosql-documents-mongodb-query-language-vs-couchbase-n1ql\/","name":"NoSQL \ub370\uc774\ud130 \uc870\uc778: MongoDB \ucffc\ub9ac \uc5b8\uc5b4 \ub300 Couchbase N1QL","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/joining-nosql-documents-mongodb-query-language-vs-couchbase-n1ql\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/joining-nosql-documents-mongodb-query-language-vs-couchbase-n1ql\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/02\/mongo-to-couchbase.png","datePublished":"2017-02-27T15:19:19+00:00","dateModified":"2020-02-17T02:00:29+00:00","description":"Learn the secrets of joining NoSQL documents in this tutorial featuring the MongoDB Query Language and Couchbase's intuitive N1QL query language.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/joining-nosql-documents-mongodb-query-language-vs-couchbase-n1ql\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/joining-nosql-documents-mongodb-query-language-vs-couchbase-n1ql\/"]}]},{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/joining-nosql-documents-mongodb-query-language-vs-couchbase-n1ql\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/02\/mongo-to-couchbase.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/02\/mongo-to-couchbase.png","width":1100,"height":389},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/joining-nosql-documents-mongodb-query-language-vs-couchbase-n1ql\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Joining NoSQL Data: MongoDB Query Language vs Couchbase N1QL"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ube14\ub85c\uadf8","description":"NoSQL \ub370\uc774\ud130\ubca0\uc774\uc2a4, Couchbase","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ko-KR"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ube14\ub85c\uadf8","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/bb545ebe83bb2d12f91095811d0a72e1","name":"Nic Raboy, \uac1c\ubc1c\uc790 \uc639\ud638\uc790, Couchbase","image":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/8863514d8bed0cf6080f23db40e00354","url":"https:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g","caption":"Nic Raboy, Developer Advocate, Couchbase"},"description":"\ub2c9 \ub77c\ubcf4\uc774\ub294 \ucd5c\uc2e0 \uc6f9 \ubc0f \ubaa8\ubc14\uc77c \uac1c\ubc1c \uae30\uc220\uc744 \uc639\ud638\ud558\ub294 \uc0ac\ub78c\uc785\ub2c8\ub2e4. \uadf8\ub294 Java, JavaScript, Golang \ubc0f Angular, NativeScript, Apache Cordova\uc640 \uac19\uc740 \ub2e4\uc591\ud55c \ud504\ub808\uc784\uc6cc\ud06c\uc5d0 \ub300\ud55c \uacbd\ud5d8\uc774 \uc788\uc2b5\ub2c8\ub2e4. Nic\uc740 \uc6f9 \ubc0f \ubaa8\ubc14\uc77c \uac1c\ubc1c\uc744 \ubcf4\ub2e4 \uc27d\uac8c \uc774\ud574\ud560 \uc218 \uc788\ub3c4\ub85d \uc790\uc2e0\uc758 \uac1c\ubc1c \uacbd\ud5d8\uc5d0 \ub300\ud574 \uae00\uc744 \uc4f0\uace0 \uc788\uc2b5\ub2c8\ub2e4.","sameAs":["https:\/\/www.thepolyglotdeveloper.com","https:\/\/www.facebook.com\/thepolyglotdeveloper","https:\/\/x.com\/nraboy"],"url":"https:\/\/www.couchbase.com\/blog\/ko\/author\/nic-raboy-2\/"}]}},"authors":[{"term_id":9032,"user_id":63,"is_guest":0,"slug":"nic-raboy-2","display_name":"Nic Raboy, Developer Advocate, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g","author_category":"","last_name":"Raboy","first_name":"Nic","job_title":"","user_url":"https:\/\/www.thepolyglotdeveloper.com","description":"\ub2c9 \ub77c\ubcf4\uc774\ub294 \ucd5c\uc2e0 \uc6f9 \ubc0f \ubaa8\ubc14\uc77c \uac1c\ubc1c \uae30\uc220\uc744 \uc639\ud638\ud558\ub294 \uc0ac\ub78c\uc785\ub2c8\ub2e4. \uadf8\ub294 Java, JavaScript, Golang \ubc0f Angular, NativeScript, Apache Cordova\uc640 \uac19\uc740 \ub2e4\uc591\ud55c \ud504\ub808\uc784\uc6cc\ud06c\uc5d0 \ub300\ud55c \uacbd\ud5d8\uc774 \uc788\uc2b5\ub2c8\ub2e4. Nic\uc740 \uc6f9 \ubc0f \ubaa8\ubc14\uc77c \uac1c\ubc1c\uc744 \ubcf4\ub2e4 \uc27d\uac8c \uc774\ud574\ud560 \uc218 \uc788\ub3c4\ub85d \uc790\uc2e0\uc758 \uac1c\ubc1c \uacbd\ud5d8\uc5d0 \ub300\ud574 \uae00\uc744 \uc4f0\uace0 \uc788\uc2b5\ub2c8\ub2e4."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts\/2841","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/users\/63"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/comments?post=2841"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts\/2841\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/media\/2787"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/media?parent=2841"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/categories?post=2841"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/tags?post=2841"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/ppma_author?post=2841"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}