{"id":92785,"date":"2025-11-24T11:33:48","date_gmt":"2025-11-24T04:33:48","guid":{"rendered":"https:\/\/itviec.com\/blog\/?p=92785"},"modified":"2025-11-24T11:33:51","modified_gmt":"2025-11-24T04:33:51","slug":"huong-dan-su-dung-mongodb-find","status":"publish","type":"post","link":"https:\/\/itviec.com\/blog\/huong-dan-su-dung-mongodb-find\/","title":{"rendered":"MongoDB find(): Chi\u1ebfc ch\u00eca kh\u00f3a &#8220;v\u1ea1n n\u0103ng&#8221; trong MongoDB"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_85 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">N\u1ed9i dung b\u00e0i vi\u1ebft<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/itviec.com\/blog\/huong-dan-su-dung-mongodb-find\/#Tong_quan_ve_find_trong_MongoDB\" >T\u1ed5ng quan v\u1ec1 find() trong MongoDB<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/itviec.com\/blog\/huong-dan-su-dung-mongodb-find\/#Cac_loai_truy_van_voi_find\" >C\u00e1c lo\u1ea1i truy v\u1ea5n v\u1edbi find()<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/itviec.com\/blog\/huong-dan-su-dung-mongodb-find\/#Cach_toi_uu_hoa_truy_van_voi_Index\" >C\u00e1ch t\u1ed1i \u01b0u h\u00f3a truy v\u1ea5n v\u1edbi Index<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/itviec.com\/blog\/huong-dan-su-dung-mongodb-find\/#Cac_loi_thuong_gap_voi_find\" >C\u00e1c l\u1ed7i th\u01b0\u1eddng g\u1eb7p v\u1edbi find()<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/itviec.com\/blog\/huong-dan-su-dung-mongodb-find\/#Cau_hoi_thuong_gap_ve_MongoDB_find\" >C\u00e2u h\u1ecfi th\u01b0\u1eddng g\u1eb7p v\u1ec1 MongoDB find()<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/itviec.com\/blog\/huong-dan-su-dung-mongodb-find\/#Tong_ket\" >T\u1ed5ng k\u1ebft<\/a><\/li><\/ul><\/nav><\/div>\n\n<p><strong><em>N\u1ebfu coi MongoDB l\u00e0 m\u1ed9t \u201ckho t\u00e0ng d\u1eef li\u1ec7u\u201d, th\u00ec MongoDB <code>find()<\/code> ch\u00ednh l\u00e0 chi\u1ebfc ch\u00eca kh\u00f3a gi\u00fap b\u1ea1n m\u1edf ra \u0111\u00fang ng\u0103n t\u1ee7 m\u00ecnh c\u1ea7n. T\u1eeb vi\u1ec7c l\u1ea5y to\u00e0n b\u1ed9 d\u1eef li\u1ec7u, l\u1ecdc theo \u0111i\u1ec1u ki\u1ec7n, cho \u0111\u1ebfn \u00e1p d\u1ee5ng c\u00e1c to\u00e1n t\u1eed n\u00e2ng cao, t\u1ea5t c\u1ea3 \u0111\u1ec1u c\u00f3 th\u1ec3 b\u1eaft \u0111\u1ea7u ch\u1ec9 v\u1edbi m\u1ed9t l\u1ec7nh <code>find()<\/code>.<\/em><\/strong><\/p>\n\n\n\n<p>\u0110\u1ecdc b\u00e0i vi\u1ebft n\u00e0y \u0111\u1ec3 hi\u1ec3u r\u00f5 h\u01a1n v\u1ec1:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>C\u00e1c lo\u1ea1i truy v\u1ea5n v\u1edbi <code>find()<\/code> trong MongoDB<\/li>\n\n\n\n<li>T\u1ed1i \u01b0u h\u00f3a truy v\u1ea5n v\u1edbi index<\/li>\n\n\n\n<li>M\u1ed9t s\u1ed1 l\u1ed7i th\u01b0\u1eddng g\u1eb7p v\u1edbi <code>find()<\/code> trong MongoDB<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-t\u1ed5ng-quan-v\u1ec1-find-trong-mongodb\"><span class=\"ez-toc-section\" id=\"Tong_quan_ve_find_trong_MongoDB\"><\/span><strong>T\u1ed5ng quan v\u1ec1 find() trong MongoDB<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-t\u1ed5ng-quan-v\u1ec1-mongodb\"><strong>T\u1ed5ng quan v\u1ec1 MongoDB<\/strong><\/h3>\n\n\n\n<p>MongoDB l\u00e0 m\u1ed9t c\u01a1 s\u1edf d\u1eef li\u1ec7u NoSQL d\u1ea1ng document, \u0111\u01b0\u1ee3c x\u00e2y d\u1ef1ng \u0111\u1ec3 l\u01b0u tr\u1eef d\u1eef li\u1ec7u linh ho\u1ea1t d\u01b0\u1edbi \u0111\u1ecbnh d\u1ea1ng BSON (Binary JSON). \u0110i\u1ec3m m\u1ea1nh c\u1ee7a MongoDB n\u1eb1m \u1edf kh\u1ea3 n\u0103ng kh\u00f4ng b\u1eaft bu\u1ed9c schema c\u1ed1 \u0111\u1ecbnh, nh\u1edd \u0111\u00f3 m\u00e0 ng\u01b0\u1eddi d\u00f9ng c\u00f3 th\u1ec3 th\u00eam tr\u01b0\u1eddng m\u1edbi ho\u1eb7c thay \u0111\u1ed5i c\u1ea5u tr\u00fac c\u1ee7a d\u1eef li\u1ec7u m\u00e0 kh\u00f4ng c\u1ea7n ch\u1ec9nh s\u1eeda to\u00e0n b\u1ed9 h\u1ec7 th\u1ed1ng. Ch\u00ednh v\u00ec v\u1eady, MongoDB \u0111\u1eb7c bi\u1ec7t ph\u00f9 h\u1ee3p cho nh\u1eefng \u1ee9ng d\u1ee5ng web ho\u1eb7c h\u1ec7 th\u1ed1ng hi\u1ec7n \u0111\u1ea1i, n\u01a1i m\u00e0 d\u1eef li\u1ec7u thay \u0111\u1ed5i nhanh ch\u00f3ng.<\/p>\n\n\n\n<p>Trong MongoDB, d\u1eef li\u1ec7u \u0111\u01b0\u1ee3c t\u1ed5 ch\u1ee9c theo ba t\u1ea7ng:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Database<\/strong>: \u0110\u00e2y l\u00e0 \u201ckho ch\u1ee9a\u201d ch\u00ednh, n\u01a1i b\u1ea1n qu\u1ea3n l\u00fd nhi\u1ec1u t\u1eadp d\u1eef li\u1ec7u kh\u00e1c nhau. M\u1ed9t \u1ee9ng d\u1ee5ng th\u01b0\u1eddng s\u1ebd c\u00f3 \u00edt nh\u1ea5t m\u1ed9t database.<\/li>\n\n\n\n<li><strong>Collection<\/strong>: B\u00ean trong database, d\u1eef li\u1ec7u \u0111\u01b0\u1ee3c chia th\u00e0nh nhi\u1ec1u collection. Collection gi\u1ed1ng nh\u01b0 \u201cb\u1ea3ng\u201d trong SQL nh\u01b0ng kh\u00f4ng b\u1eaft bu\u1ed9c ph\u1ea3i c\u00f3 schema c\u1ed1 \u0111\u1ecbnh.<\/li>\n\n\n\n<li><strong>Document<\/strong>: \u0110\u00e2y l\u00e0 \u0111\u01a1n v\u1ecb d\u1eef li\u1ec7u nh\u1ecf nh\u1ea5t, l\u01b0u d\u01b0\u1edbi d\u1ea1ng BSON trong storage nh\u01b0ng \u0111\u01b0\u1ee3c bi\u1ec3u di\u1ec5n d\u01b0\u1edbi d\u1ea1ng JSON khi l\u00e0m vi\u1ec7c. M\u1ed7i document c\u00f3 m\u1ed9t tr\u01b0\u1eddng <code>_id<\/code> unique \u0111\u01b0\u1ee3c MongoDB t\u1ef1 \u0111\u1ed9ng t\u1ea1o n\u1ebfu kh\u00f4ng \u0111\u01b0\u1ee3c ch\u1ec9 \u0111\u1ecbnh. V\u00ed d\u1ee5 m\u1ed9t document r\u1ea5t \u0111\u01a1n gi\u1ea3n c\u00f3 th\u1ec3 l\u00e0:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>{ \n  \"_id\": ObjectId(\"507f1f77bcf86cd799439011\"),\n  \"name\": \"Alice\", \n  \"age\": 25, \n  \"email\": \"alice@example.com\" \n}<\/code><\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><em>\u0110\u1ecdc chi ti\u1ebft: <strong><a href=\"https:\/\/itviec.com\/blog\/mongodb-la-gi\/\" target=\"_blank\" rel=\"noreferrer noopener\">MongoDB l\u00e0 g\u00ec? \u0110\u1ecbnh ngh\u0129a v\u00e0 Hi\u1ec3u r\u00f5 A-Z v\u1ec1 MongoDB<\/a><\/strong><\/em><\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-find-trong-mongodb\"><strong>find() trong MongoDB<\/strong><\/h3>\n\n\n\n<p>Khi \u0111\u00e3 c\u00f3 d\u1eef li\u1ec7u \u0111\u01b0\u1ee3c l\u01b0u trong collection, c\u00f4ng c\u1ee5 th\u01b0\u1eddng d\u00f9ng nh\u1ea5t \u0111\u1ec3 l\u1ea5y d\u1eef li\u1ec7u ra ch\u00ednh l\u00e0 ph\u01b0\u01a1ng th\u1ee9c <code>find()<\/code>. \u0110\u00e2y l\u00e0 \u201cchi\u1ebfc ch\u00eca kh\u00f3a\u201d gi\u00fap ng\u01b0\u1eddi d\u00f9ng truy v\u1ea5n, t\u00ecm ki\u1ebfm v\u00e0 l\u1ecdc th\u00f4ng tin trong MongoDB. V\u00ed d\u1ee5 \u0111\u1ec3 l\u1ea5y t\u1ea5t c\u1ea3 d\u1eef li\u1ec7u t\u1eeb collection <code>test<\/code>, ta ch\u1ec9 c\u1ea7n:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>db.test.find()<\/code><\/pre>\n\n\n\n<p>Ho\u1eb7c trong <a href=\"https:\/\/itviec.com\/blog\/huong-dan-su-dung-mongodb-compass\/\" target=\"_blank\" rel=\"noreferrer noopener\">MongoDB Compass<\/a>\/mongosh hi\u1ec7n \u0111\u1ea1i:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>db.users.find({})<\/code><\/pre>\n\n\n\n<p>C\u00e2u l\u1ec7nh tr\u00ean s\u1ebd tr\u1ea3 v\u1ec1 to\u00e0n b\u1ed9 document trong collection users. M\u1eb7c \u0111\u1ecbnh, <code>find()<\/code> s\u1ebd tr\u1ea3 v\u1ec1 m\u1ed9t cursor ch\u1ee9 kh\u00f4ng ph\u1ea3i to\u00e0n b\u1ed9 k\u1ebft qu\u1ea3 ngay l\u1eadp t\u1ee9c, gi\u00fap t\u1ed1i \u01b0u hi\u1ec7u n\u0103ng khi l\u00e0m vi\u1ec7c v\u1edbi d\u1eef li\u1ec7u l\u1edbn.<\/p>\n\n\n\n<p>\u0110\u00e2y l\u00e0 b\u01b0\u1edbc kh\u1edfi \u0111\u1ea7u c\u01a1 b\u1ea3n nh\u1ea5t \u0111\u1ec3 l\u00e0m quen v\u1edbi vi\u1ec7c truy v\u1ea5n trong MongoDB, v\u00e0 trong nh\u1eefng ph\u1ea7n ti\u1ebfp theo ch\u00fang ta s\u1ebd c\u00f9ng \u0111i s\u00e2u h\u01a1n v\u00e0o nhi\u1ec1u c\u00e1ch s\u1eed d\u1ee5ng <code>find()<\/code> linh ho\u1ea1t h\u01a1n.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-cac-lo\u1ea1i-truy-v\u1ea5n-v\u1edbi-find\"><span class=\"ez-toc-section\" id=\"Cac_loai_truy_van_voi_find\"><\/span><strong>C\u00e1c lo\u1ea1i truy v\u1ea5n v\u1edbi <\/strong>find()<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-cu-phap-c\u01a1-b\u1ea3n\"><strong>C\u00fa ph\u00e1p c\u01a1 b\u1ea3n<\/strong><\/h3>\n\n\n\n<p>C\u00fa ph\u00e1p chung c\u1ee7a <code>find()<\/code> trong MongoDB l\u00e0:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>db.&lt;collection&gt;.find(query, projection)<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Trong \u0111\u00f3:\n<ul class=\"wp-block-list\">\n<li><code>query<\/code>: \u0111i\u1ec1u ki\u1ec7n \u0111\u1ec3 l\u1ecdc d\u1eef li\u1ec7u (c\u00f3 th\u1ec3 b\u1ecf tr\u1ed1ng \u0111\u1ec3 l\u1ea5y t\u1ea5t c\u1ea3).<\/li>\n\n\n\n<li><code>projection<\/code>: x\u00e1c \u0111\u1ecbnh nh\u1eefng field n\u00e0o \u0111\u01b0\u1ee3c hi\u1ec3n th\u1ecb.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p>V\u00ed d\u1ee5:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>db.users.find()\n\/\/ Ho\u1eb7c t\u01b0\u01a1ng \u0111\u01b0\u01a1ng:\ndb.users.find({})<\/code><\/pre>\n\n\n\n<p>K\u1ebft qu\u1ea3: Truy v\u1ea5n n\u00e0y s\u1ebd tr\u1ea3 v\u1ec1 t\u1ea5t c\u1ea3 c\u00e1c document trong collection <code>users<\/code>.\u00a0<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>V\u00ed d\u1ee5 v\u1edbi projection:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ Ch\u1ec9 l\u1ea5y name v\u00e0 age, kh\u00f4ng l\u1ea5y _id\ndb.users.find({}, { name: 1, age: 1, _id: 0 })<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-truy-v\u1ea5n-v\u1edbi-di\u1ec1u-ki\u1ec7n\"><strong>Truy v\u1ea5n v\u1edbi \u0111i\u1ec1u ki\u1ec7n<\/strong><\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>To\u00e1n t\u1eed<\/strong><\/td><td><strong>\u00dd ngh\u0129a<\/strong><\/td><td><strong>\u1ee8ng d\u1ee5ng<\/strong><\/td><\/tr><tr><td><code>$eq<\/code><\/td><td>B\u1eb1ng<\/td><td>L\u1ea5y t\u1ea5t c\u1ea3 c\u00e1c document c\u00f3 field b\u1eb1ng \u0111\u00fang gi\u00e1 tr\u1ecb ch\u1ec9 \u0111\u1ecbnh.<\/td><\/tr><tr><td><code>$ne<\/code><\/td><td>Kh\u00e1c<\/td><td>L\u1ea5y t\u1ea5t c\u1ea3 c\u00e1c document c\u00f3 field kh\u00e1c gi\u00e1 tr\u1ecb ch\u1ec9 \u0111\u1ecbnh.<\/td><\/tr><tr><td><code>$gt<\/code><\/td><td>L\u1edbn h\u01a1n<\/td><td>L\u1ea5y c\u00e1c document c\u00f3 field l\u1edbn h\u01a1n gi\u00e1 tr\u1ecb ch\u1ec9 \u0111\u1ecbnh.<\/td><\/tr><tr><td><code>$gte<\/code><\/td><td>L\u1edbn h\u01a1n ho\u1eb7c b\u1eb1ng<\/td><td>L\u1ea5y c\u00e1c document c\u00f3 field l\u1edbn h\u01a1n ho\u1eb7c b\u1eb1ng gi\u00e1 tr\u1ecb ch\u1ec9 \u0111\u1ecbnh.<\/td><\/tr><tr><td><code>$lt<\/code><\/td><td>Nh\u1ecf h\u01a1n<\/td><td>L\u1ea5y c\u00e1c document c\u00f3 field nh\u1ecf h\u01a1n gi\u00e1 tr\u1ecb ch\u1ec9 \u0111\u1ecbnh.<\/td><\/tr><tr><td><code>$lte<\/code><\/td><td>Nh\u1ecf h\u01a1n ho\u1eb7c b\u1eb1ng<\/td><td>L\u1ea5y c\u00e1c document c\u00f3 field nh\u1ecf h\u01a1n ho\u1eb7c b\u1eb1ng gi\u00e1 tr\u1ecb ch\u1ec9 \u0111\u1ecbnh.<\/td><\/tr><tr><td><code>$in<\/code><\/td><td>N\u1eb1m trong danh s\u00e1ch<\/td><td>Ki\u1ec3m tra gi\u00e1 tr\u1ecb c\u00f3 n\u1eb1m trong m\u1ea3ng<\/td><\/tr><tr><td><code>$nin<\/code><\/td><td>Kh\u00f4ng n\u1eb1m trong danh s\u00e1ch<\/td><td>Ki\u1ec3m tra gi\u00e1 tr\u1ecb kh\u00f4ng n\u1eb1m trong m\u1ea3ng<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>V\u00ed d\u1ee5 1: L\u1ea5y t\u1ea5t c\u1ea3 user c\u00f3 tu\u1ed5i b\u1eb1ng 25, ta d\u00f9ng to\u00e1n t\u1eed <code>$eq<\/code> v\u1edbi c\u00fa ph\u00e1p:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>db.users.find({ age: { $eq: 25 } })\n\/\/ Ho\u1eb7c vi\u1ebft g\u1ecdn h\u01a1n (implicit $eq):\ndb.users.find({ age: 25 })<\/code><\/pre>\n\n\n\n<p>V\u00ed d\u1ee5 2: T\u00ecm user c\u00f3 tu\u1ed5i kh\u00e1c 25, ta d\u00f9ng to\u00e1n t\u1eed <code>$ne<\/code> v\u1edbi c\u00fa ph\u00e1p:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>db.users.find({ age: { $ne: 25 } })<\/code><\/pre>\n\n\n\n<p>V\u00ed d\u1ee5 3:\u00a0 T\u00ecm user c\u00f3 tu\u1ed5i l\u1edbn h\u01a1n 25, ta d\u00f9ng to\u00e1n t\u1eed <code>$gt<\/code> v\u1edbi c\u00fa ph\u00e1p:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>db.users.find({ age: { $gt: 25 } })<\/code><\/pre>\n\n\n\n<p>V\u00ed d\u1ee5 4: K\u1ebft h\u1ee3p nhi\u1ec1u to\u00e1n t\u1eed so s\u00e1nh:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ T\u00ecm user c\u00f3 tu\u1ed5i t\u1eeb 18 \u0111\u1ebfn 30\ndb.users.find({ age: { $gte: 18, $lte: 30 } })<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-truy-v\u1ea5n-v\u1edbi-toan-t\u1eed-logic-nbsp\"><strong>Truy v\u1ea5n v\u1edbi to\u00e1n t\u1eed logic&nbsp;<\/strong><\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>To\u00e1n t\u1eed<\/strong><\/td><td><strong>\u00dd ngh\u0129a<\/strong><\/td><td><strong>\u1ee8ng d\u1ee5ng<\/strong><\/td><\/tr><tr><td><code>$and<\/code><\/td><td>V\u00e0 (AND)<\/td><td>Tr\u1ea3 v\u1ec1 document khi t\u1ea5t c\u1ea3 \u0111i\u1ec1u ki\u1ec7n \u0111\u1ec1u \u0111\u00fang.<\/td><\/tr><tr><td><code>$or<\/code><\/td><td>Ho\u1eb7c (OR)<\/td><td>Tr\u1ea3 v\u1ec1 document khi \u00edt nh\u1ea5t m\u1ed9t \u0111i\u1ec1u ki\u1ec7n \u0111\u00fang.<\/td><\/tr><tr><td><code>$not<\/code><\/td><td>Ph\u1ee7 \u0111\u1ecbnh (NOT)<\/td><td>\u0110\u1ea3o ng\u01b0\u1ee3c \u0111i\u1ec1u ki\u1ec7n<\/td><\/tr><tr><td><code>$nor<\/code><\/td><td>Kh\u00f4ng ho\u1eb7c (NOR)<\/td><td>Tr\u1ea3 v\u1ec1 document khi T\u1ea4T C\u1ea2 \u0111i\u1ec1u ki\u1ec7n \u0111\u1ec1u sai<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>V\u00ed d\u1ee5:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>T\u00ecm user c\u00f3 tu\u1ed5i l\u1edbn h\u01a1n 20 V\u00c0 gi\u1edbi t\u00ednh l\u00e0 nam (Male), ta d\u00f9ng to\u00e1n t\u1eed <code>$and<\/code> v\u1edbi c\u00fa ph\u00e1p:<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>db.users.find({\n  $and: &#91;\n    { age: { $gt: 20 } },\n    { gender: \"Male\" }\n  ]\n})\n\n\/\/ Ho\u1eb7c vi\u1ebft g\u1ecdn h\u01a1n (implicit $and):\ndb.users.find({\n  age: { $gt: 20 },\n  gender: \"Male\"\n})<\/code><\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>T\u00ecm user c\u00f3 s\u1edf th\u00edch l\u00e0 \u201cTravelling\u201d ho\u1eb7c \u201cGaming\u201d, ta d\u00f9ng to\u00e1n t\u1eed <code>$or<\/code> v\u1edbi c\u00fa ph\u00e1p:<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>db.users.find({\n  $or: &#91;\n    { interests: \"Travelling\" },\n    { interests: \"Gaming\" }\n  ]\n})\n\n\/\/ N\u1ebfu c\u00f9ng m\u1ed9t field, c\u00f3 th\u1ec3 d\u00f9ng $in:\ndb.users.find({ \n  interests: { $in: &#91;\"Travelling\", \"Gaming\"] } \n})<\/code><\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>T\u00ecm user c\u00f3 tu\u1ed5i l\u00e0 18 ho\u1eb7c 25, ta d\u00f9ng to\u00e1n t\u1eed <code>$in<\/code> v\u1edbi c\u00fa ph\u00e1p:<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>db.users.find({ age: { $in: &#91;18, 25] } })<\/code><\/pre>\n\n\n\n<ol start=\"4\" class=\"wp-block-list\">\n<li>T\u00ecm user c\u00f3 t\u00ean kh\u00f4ng ph\u1ea3i l\u00e0 \u201cAlice\u201d ho\u1eb7c \u201cBob\u201d, ta d\u00f9ng to\u00e1n t\u1eed <code>$nin<\/code> v\u1edbi c\u00fa ph\u00e1p:<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>db.users.find({ name: { $nin: &#91;\"Alice\", \"Bob\"] } })<\/code><\/pre>\n\n\n\n<ol start=\"5\" class=\"wp-block-list\">\n<li>T\u00ecm user kh\u00f4ng ph\u1ea3i tr\u1ebb em (ngh\u0129a l\u00e0 tu\u1ed5i kh\u00f4ng nh\u1ecf h\u01a1n 18) ta d\u00f9ng <code>$not<\/code> nh\u01b0 sau:<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>db.users.find({ age: { $not: { $lt: 18 } } })<\/code><\/pre>\n\n\n\n<ol start=\"6\" class=\"wp-block-list\">\n<li>T\u00ecm user kh\u00f4ng ph\u1ea3i l\u00e0 nam v\u00e0 kh\u00f4ng s\u1ed1ng \u1edf H\u00e0 N\u1ed9i ta d\u00f9ng <code>$nor<\/code> nh\u01b0 sau:<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>db.users.find({\n  $nor: &#91;\n    { gender: \"Male\" },\n    { city: \"Hanoi\" }\n  ]\n})<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-truy-v\u1ea5n-trong-m\u1ea3ng\"><strong>Truy v\u1ea5n trong m\u1ea3ng<\/strong><\/h3>\n\n\n\n<p>Gi\u1ea3 s\u1eed ta c\u00f3 collection <code>users<\/code> ch\u1ee9a c\u00e1c document sau:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n  name: \"Alice\",\n  interests: &#91;\"Travelling\", \"Cooking\", \"Gaming\"],\n  skills: &#91;\n    { name: \"JavaScript\", level: \"Intermediate\" },\n    { name: \"Python\", level: \"Beginner\" }\n  ],\n  friends: &#91;\"Bob\", \"Charlie\"]\n}<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u0110\u1ec3 t\u00ecm user c\u00f3 s\u1edf th\u00edch v\u1eeba \u201cTravelling\u201d v\u1eeba \u201cGaming\u201d, ta d\u00f9ng to\u00e1n t\u1eed <code>$all<\/code> v\u1edbi c\u00fa ph\u00e1p:<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>db.users.find({ interests: { $all: &#91;\"Travelling\", \"Gaming\"] } })<\/code><\/pre>\n\n\n\n<p>K\u1ebft qu\u1ea3 s\u1ebd tr\u1ea3 v\u1ec1 document c\u00f3 field interests ch\u1ee9a \u0111\u1ee7 c\u1ea3 hai gi\u00e1 tr\u1ecb \u201cTravelling\u201d v\u00e0 \u201cGaming\u201d.<\/p>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u0110\u1ec3 t\u00ecm user c\u00f3 <strong>M\u1ed8T TRONG<\/strong> c\u00e1c s\u1edf th\u00edch, ta d\u00f9ng <code>$in<\/code>:<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>db.users.find({ interests: { $in: &#91;\"Travelling\", \"Gaming\"] } })<\/code><\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>\u0110\u1ec3 t\u00ecm user c\u00f3 k\u1ef9 n\u0103ng <code>JavaScript<\/code> v\u1edbi level = \u201cIntermediate\u201d, ta d\u00f9ng to\u00e1n t\u1eed <code>$elemMatch<\/code>:<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>db.users.find({\n  skills: { $elemMatch: { name: \"JavaScript\", level: \"Intermediate\" } }\n})<\/code><\/pre>\n\n\n\n<p>K\u1ebft qu\u1ea3 s\u1ebd tr\u1ea3 v\u1ec1 document c\u00f3 m\u1ea3ng skills trong \u0111\u00f3 c\u00f3 \u00edt nh\u1ea5t m\u1ed9t objec<strong>t<\/strong> th\u1ecfa \u0111i\u1ec1u ki\u1ec7n <code>name = JavaScript<\/code> v\u00e0 <code>level = Intermediate<\/code>.<\/p>\n\n\n\n<ol start=\"4\" class=\"wp-block-list\">\n<li>So s\u00e1nh v\u1edbi query kh\u00f4ng d\u00f9ng <code>$elemMatch<\/code>:<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ Query SAI - t\u00ecm skills c\u00f3 name=\"JavaScript\" HO\u1eb6C level=\"Intermediate\"\ndb.users.find({\n  \"skills.name\": \"JavaScript\",\n  \"skills.level\": \"Intermediate\"\n})\n\/\/ Query n\u00e0y c\u00f3 th\u1ec3 match document c\u00f3 skill Python level Intermediate \n\/\/ v\u00e0 skill JavaScript level Advanced (kh\u00f4ng ph\u1ea3i c\u00f9ng m\u1ed9t object)<\/code><\/pre>\n\n\n\n<ol start=\"5\" class=\"wp-block-list\">\n<li>T\u00ecm user c\u00f3 \u0111\u00fang 2 ng\u01b0\u1eddi b\u1ea1n trong danh s\u00e1ch <code>friends<\/code>, ta d\u00f9ng to\u00e1n t\u1eed <code>$size<\/code>:<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>db.users.find({ friends: { $size: 2 } })<\/code><\/pre>\n\n\n\n<p>K\u1ebft qu\u1ea3 s\u1ebd tr\u1ea3 v\u1ec1 document m\u00e0 m\u1ea3ng friends c\u00f3 \u0111\u00fang 2 ph\u1ea7n t\u1eed.<\/p>\n\n\n\n<ol start=\"6\" class=\"wp-block-list\">\n<li>C\u00e1c c\u00e1ch query m\u1ea3ng kh\u00e1c:<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ T\u00ecm theo v\u1ecb tr\u00ed c\u1ee5 th\u1ec3 trong m\u1ea3ng (index 0)\ndb.users.find({ \"interests.0\": \"Travelling\" })\n\n\/\/ T\u00ecm m\u1ea3ng ch\u1ee9a ch\u00ednh x\u00e1c c\u00e1c ph\u1ea7n t\u1eed (th\u1ee9 t\u1ef1 v\u00e0 s\u1ed1 l\u01b0\u1ee3ng ph\u1ea3i kh\u1edbp)\ndb.users.find({ interests: &#91;\"Travelling\", \"Cooking\", \"Gaming\"] })\n\n\/\/ T\u00ecm document c\u00f3 m\u1ea3ng kh\u00f4ng r\u1ed7ng\ndb.users.find({ interests: { $exists: true, $ne: &#91;] } })\n\n\/\/ S\u1eed d\u1ee5ng $slice trong projection \u0111\u1ec3 l\u1ea5y m\u1ed9t ph\u1ea7n m\u1ea3ng\ndb.users.find({}, { interests: { $slice: 2 } }) \/\/ L\u1ea5y 2 ph\u1ea7n t\u1eed \u0111\u1ea7u\ndb.users.find({}, { interests: { $slice: -1 } }) \/\/ L\u1ea5y ph\u1ea7n t\u1eed cu\u1ed1i<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-truy-v\u1ea5n-v\u1edbi-sort-limit-va-skip\"><strong>Truy v\u1ea5n v\u1edbi Sort, Limit v\u00e0 Skip<\/strong><\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-sort\"><strong>Sort()<\/strong><\/h4>\n\n\n\n<p>D\u00f9ng \u0111\u1ec3 s\u1eafp x\u1ebfp c\u00e1c document theo th\u1ee9 t\u1ef1 t\u0103ng d\u1ea7n (1) ho\u1eb7c gi\u1ea3m d\u1ea7n (-1) d\u1ef1a tr\u00ean m\u1ed9t ho\u1eb7c nhi\u1ec1u tr\u01b0\u1eddng.<\/p>\n\n\n\n<p>V\u00ed d\u1ee5 \u0111\u1ec3 s\u1eafp x\u1ebfp danh s\u00e1ch ng\u01b0\u1eddi d\u00f9ng theo tu\u1ed5i gi\u1ea3m d\u1ea7n, ta c\u00f3 c\u00fa ph\u00e1p:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>db.users.find().sort({ age: -1 })<\/code><\/pre>\n\n\n\n<p>Trong \u0111\u00f3: <code>{ age: -1 } <\/code>ngh\u0129a l\u00e0 s\u1eafp x\u1ebfp theo tr\u01b0\u1eddng <code>age<\/code> theo th\u1ee9 t\u1ef1 gi\u1ea3m d\u1ea7n. N\u1ebfu mu\u1ed1n t\u0103ng d\u1ea7n th\u00ec d\u00f9ng <code>{ age: 1 }<\/code>.<\/p>\n\n\n\n<p>V\u00ed d\u1ee5 s\u1eafp x\u1ebfp theo nhi\u1ec1u tr\u01b0\u1eddng:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ S\u1eafp x\u1ebfp theo age gi\u1ea3m d\u1ea7n, n\u1ebfu age b\u1eb1ng nhau th\u00ec s\u1eafp x\u1ebfp theo name t\u0103ng d\u1ea7n\ndb.users.find().sort({ age: -1, name: 1 })<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-limit\"><strong>Limit()<\/strong><\/h4>\n\n\n\n<p>D\u00f9ng \u0111\u1ec3 gi\u1edbi h\u1ea1n s\u1ed1 l\u01b0\u1ee3ng document \u0111\u01b0\u1ee3c tr\u1ea3 v\u1ec1, r\u1ea5t h\u1eefu \u00edch khi b\u1ea1n ch\u1ec9 c\u1ea7n m\u1ed9t ph\u1ea7n d\u1eef li\u1ec7u nh\u1ecf (v\u00ed d\u1ee5 nh\u01b0 l\u1ea5y top 5 k\u1ebft qu\u1ea3).<\/p>\n\n\n\n<p>V\u00ed d\u1ee5 \u0111\u1ec3 l\u1ea5y 3 ng\u01b0\u1eddi d\u00f9ng \u0111\u1ea7u ti\u00ean trong danh s\u00e1ch, ta c\u00f3 c\u00fa ph\u00e1p:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>db.users.find().limit(3)<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Trong \u0111\u00f3: <code>limit(3)<\/code> gi\u00fap MongoDB ch\u1ec9 tr\u1ea3 v\u1ec1 t\u1ed1i \u0111a 3 document \u0111\u1ea7u ti\u00ean.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-skip\"><strong>Skip()<\/strong><\/h4>\n\n\n\n<p>D\u00f9ng \u0111\u1ec3 b\u1ecf qua m\u1ed9t s\u1ed1 l\u01b0\u1ee3ng document nh\u1ea5t \u0111\u1ecbnh trong k\u1ebft qu\u1ea3 truy v\u1ea5n. N\u00f3 th\u01b0\u1eddng \u0111\u01b0\u1ee3c k\u1ebft h\u1ee3p v\u1edbi <code>limit()<\/code> \u0111\u1ec3 ph\u00e2n trang d\u1eef li\u1ec7u (pagination).<\/p>\n\n\n\n<p>V\u00ed d\u1ee5 \u0111\u1ec3 b\u1ecf qua 2 ng\u01b0\u1eddi d\u00f9ng \u0111\u1ea7u ti\u00ean v\u00e0 l\u1ea5y ti\u1ebfp 3 ng\u01b0\u1eddi d\u00f9ng sau \u0111\u00f3, ta c\u00f3 c\u00fa ph\u00e1p:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>db.users.find().skip(2).limit(3)<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Trong \u0111\u00f3:\n<ul class=\"wp-block-list\">\n<li><code>skip(2)<\/code> b\u1ecf qua 2 document \u0111\u1ea7u ti\u00ean.<\/li>\n\n\n\n<li><code>limit(3)<\/code> sau \u0111\u00f3 l\u1ea5y 3 document ti\u1ebfp theo.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-truy-v\u1ea5n-nang-cao-v\u1edbi-text-search-va-regex\"><strong>Truy v\u1ea5n n\u00e2ng cao v\u1edbi text search v\u00e0 regex<\/strong><\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-text-search\"><strong>Text Search<\/strong><\/h4>\n\n\n\n<p>\u0110\u01b0\u1ee3c MongoDB thi\u1ebft k\u1ebf \u0111\u1ec3 t\u00ecm ki\u1ebfm to\u00e0n v\u0103n b\u1ea3n (full-text search).<\/p>\n\n\n\n<p>T\u00ednh n\u0103ng n\u00e0y \u0111\u1eb7c bi\u1ec7t h\u1eefu \u00edch khi ta c\u1ea7n t\u00ecm ki\u1ebfm d\u1eef li\u1ec7u d\u1ea1ng chu\u1ed7i trong m\u1ed9t collection c\u00f3 nhi\u1ec1u v\u0103n b\u1ea3n, ch\u1eb3ng h\u1ea1n m\u00f4 t\u1ea3 s\u1ea3n ph\u1ea9m, ti\u00eau \u0111\u1ec1 b\u00e0i vi\u1ebft ho\u1eb7c n\u1ed9i dung comment. Tuy nhi\u00ean \u0111\u1ec3 d\u00f9ng <code>$text<\/code>, ta c\u1ea7n t\u1ea1o text index tr\u01b0\u1edbc.<\/p>\n\n\n\n<p>V\u00ed d\u1ee5 \u0111\u1ec3 t\u00ecm t\u1ea5t c\u1ea3 s\u1ea3n ph\u1ea9m c\u00f3 ch\u1ee9a t\u1eeb kh\u00f3a <em>\u201c<\/em>phone<em>\u201d<\/em> trong tr\u01b0\u1eddng <code>description<\/code>, ta c\u00f3 c\u00fa ph\u00e1p:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ T\u1ea1o text index tr\u00ean tr\u01b0\u1eddng \"description\"\ndb.products.createIndex({ description: \"text\" })\n\n\/\/ Truy v\u1ea5n v\u1edbi t\u1eeb kh\u00f3a \"phone\"\ndb.products.find({ $text: { $search: \"phone\" } })<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Trong \u0111\u00f3:\n<ul class=\"wp-block-list\">\n<li><code>createIndex({ description: \"text\" })<\/code> t\u1ea1o m\u1ed9t ch\u1ec9 m\u1ee5c text tr\u00ean tr\u01b0\u1eddng <code>description<\/code>.<\/li>\n\n\n\n<li><code>$text: { $search: \"phone\" }<\/code> gi\u00fap MongoDB tr\u1ea3 v\u1ec1 t\u1ea5t c\u1ea3 document c\u00f3 ch\u1ee9a t\u1eeb \u201cphone\u201d trong <code>description<\/code>.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-regex-regular-expression\"><strong>Regex (Regular Expression)<\/strong><\/h4>\n\n\n\n<p>L\u00e0 bi\u1ec3u th\u1ee9c ch\u00ednh quy cho ph\u00e9p t\u00ecm ki\u1ebfm linh ho\u1ea1t h\u01a1n, v\u00ed d\u1ee5 t\u00ecm chu\u1ed7i b\u1eaft \u0111\u1ea7u b\u1eb1ng m\u1ed9t k\u00fd t\u1ef1 c\u1ee5 th\u1ec3, ch\u1ee9a t\u1eeb kh\u00f3a \u1edf gi\u1eefa ho\u1eb7c k\u1ebft th\u00fac b\u1eb1ng m\u1eabu n\u00e0o \u0111\u00f3. \u0110i\u1ec3m m\u1ea1nh c\u1ee7a Regex l\u00e0 ta kh\u00f4ng c\u1ea7n t\u1ea1o index tr\u01b0\u1edbc, tuy nhi\u00ean v\u1edbi d\u1eef li\u1ec7u l\u1edbn th\u00ec hi\u1ec7u n\u0103ng c\u00f3 th\u1ec3 k\u00e9m h\u01a1n <code>$text<\/code>.<\/p>\n\n\n\n<p>V\u00ed d\u1ee5 \u0111\u1ec3 t\u00ecm s\u1ea3n ph\u1ea9m c\u00f3 <code>description<\/code> b\u1eaft \u0111\u1ea7u b\u1eb1ng t\u1eeb <em>\u201c<\/em>Smart<em>\u201d<\/em>, ta c\u00f3 c\u00fa ph\u00e1p:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>db.products.find({ description: { $regex: \/^Smart\/ } })\n\n\/\/ Ho\u1eb7c d\u00f9ng string pattern\ndb.products.find({ description: { $regex: \"^Smart\" } })<\/code><\/pre>\n\n\n\n<p>Trong \u0111\u00f3: <code>\/^Smart\/<\/code> ngh\u0129a l\u00e0 t\u00ecm t\u1ea5t c\u1ea3 chu\u1ed7i b\u1eaft \u0111\u1ea7u b\u1eb1ng t\u1eeb \u201cSmart\u201d, v\u00ed d\u1ee5: \u201cSmartphone\u201d, \u201cSmartwatch\u201d.<\/p>\n\n\n\n<p>V\u00ed d\u1ee5 \u0111\u1ec3 t\u00ecm s\u1ea3n ph\u1ea9m c\u00f3 <code>description<\/code> ch\u1ee9a t\u1eeb <em>\u201c<\/em>Pro<em>\u201d<\/em> \u1edf b\u1ea5t k\u1ef3 v\u1ecb tr\u00ed n\u00e0o, ta c\u00f3 c\u00fa ph\u00e1p:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>db.products.find({ description: { $regex: \/Pro\/ } })<\/code><\/pre>\n\n\n\n<p>Trong \u0111\u00f3: <code>\/Pro\/<\/code> ngh\u0129a l\u00e0 chu\u1ed7i n\u00e0o c\u00f3 ch\u1ee9a t\u1eeb \u201cPro\u201d th\u00ec s\u1ebd \u0111\u01b0\u1ee3c ch\u1ecdn, v\u00ed d\u1ee5 \u201ciPhone Pro\u201d, \u201cMacBook Pro\u201d.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>C\u00e1c options c\u1ee7a Regex:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ Case-insensitive search (kh\u00f4ng ph\u00e2n bi\u1ec7t hoa th\u01b0\u1eddng)\ndb.products.find({ \n  description: { \n    $regex: \/pro\/i \n  } \n})\n\/\/ Ho\u1eb7c:\ndb.products.find({ \n  description: { \n    $regex: \"pro\", \n    $options: \"i\" \n  } \n})\n\n\/\/ Multiline mode (^ v\u00e0 $ match \u0111\u1ea7u\/cu\u1ed1i m\u1ed7i d\u00f2ng)\ndb.products.find({ \n  description: { \n    $regex: \/^Smart\/m \n  } \n})\n\n\/\/ K\u1ebft th\u00fac b\u1eb1ng pattern\ndb.products.find({ \n  description: { \n    $regex: \/Pro$\/ \n  } \n})\n\n\/\/ Wildcard patterns\ndb.products.find({ \n  description: { \n    $regex: \/Smart.*Pro\/ \n  } \n})<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-cach-t\u1ed1i-\u01b0u-hoa-truy-v\u1ea5n-v\u1edbi-index\"><span class=\"ez-toc-section\" id=\"Cach_toi_uu_hoa_truy_van_voi_Index\"><\/span><strong>C\u00e1ch t\u1ed1i \u01b0u h\u00f3a truy v\u1ea5n v\u1edbi Index<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Trong MongoDB, Index (ch\u1ec9 m\u1ee5c) l\u00e0 c\u00f4ng c\u1ee5 quan tr\u1ecdng \u0111\u1ec3 t\u0103ng t\u1ed1c \u0111\u1ed9 truy v\u1ea5n. Khi kh\u00f4ng c\u00f3 index, MongoDB ph\u1ea3i qu\u00e9t to\u00e0n b\u1ed9 collection (full collection scan) \u0111\u1ec3 t\u00ecm d\u1eef li\u1ec7u n\u00ean s\u1ebd \u1ea3nh h\u01b0\u1edfng \u0111\u1ebfn t\u1ed1c \u0111\u1ed9 khi d\u1eef li\u1ec7u l\u1edbn.<\/p>\n\n\n\n<p>V\u1edbi index, MongoDB c\u00f3 th\u1ec3 nh\u1ea3y th\u1eb3ng \u0111\u1ebfn v\u1ecb tr\u00ed c\u1ea7n thi\u1ebft, t\u01b0\u01a1ng t\u1ef1 nh\u01b0 vi\u1ec7c tra c\u1ee9u m\u1ed9t m\u1ee5c trong m\u1ee5c l\u1ee5c c\u1ee7a cu\u1ed1n s\u00e1ch thay v\u00ec ph\u1ea3i \u0111\u1ecdc t\u1eeb \u0111\u1ea7u \u0111\u1ebfn cu\u1ed1i.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-t\u1ea1o-index-c\u01a1-b\u1ea3n\"><strong>T\u1ea1o Index c\u01a1 b\u1ea3n<\/strong><\/h3>\n\n\n\n<p>\u0110\u1ec3 t\u1ed1i \u01b0u h\u00f3a c\u00e1c truy v\u1ea5n th\u01b0\u1eddng xuy\u00ean d\u00f9ng, ta c\u00f3 th\u1ec3 t\u1ea1o index tr\u00ean m\u1ed9t ho\u1eb7c nhi\u1ec1u tr\u01b0\u1eddng d\u1eef li\u1ec7u. V\u00ed d\u1ee5 \u0111\u1ec3 t\u1ea1o index tr\u00ean tr\u01b0\u1eddng <code>age<\/code> gi\u00fap t\u0103ng t\u1ed1c c\u00e1c truy v\u1ea5n theo tu\u1ed5i, ta c\u00f3 c\u00fa ph\u00e1p:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>db.users.createIndex({ age: 1 })<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Trong \u0111\u00f3:\n<ul class=\"wp-block-list\">\n<li><code>{ age: 1 }<\/code> ngh\u0129a l\u00e0 index \u0111\u01b0\u1ee3c t\u1ea1o theo th\u1ee9 t\u1ef1 t\u0103ng d\u1ea7n. N\u1ebfu mu\u1ed1n gi\u1ea3m d\u1ea7n th\u00ec d\u00f9ng <code>{ age: -1 }<\/code>.<\/li>\n\n\n\n<li>Sau khi t\u1ea1o index n\u00e0y, c\u00e1c truy v\u1ea5n nh\u01b0 <code>db.users.find({ age: 25 })<\/code> s\u1ebd ch\u1ea1y nhanh h\u01a1n \u0111\u00e1ng k\u1ec3.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-index-tren-nhi\u1ec1u-tr\u01b0\u1eddng-compound-index\"><strong>Index tr\u00ean nhi\u1ec1u tr\u01b0\u1eddng (Compound Index)<\/strong><\/h3>\n\n\n\n<p>V\u00ed d\u1ee5 \u0111\u1ec3 t\u0103ng t\u1ed1c c\u00e1c truy v\u1ea5n l\u1ecdc theo <code>age<\/code> v\u00e0 <code>gender<\/code>, ta c\u00f3 c\u00fa ph\u00e1p:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>db.users.createIndex({ age: 1, gender: 1 })<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-text-index-tim-ki\u1ebfm-toan-van-b\u1ea3n\"><strong>Text Index (T\u00ecm ki\u1ebfm to\u00e0n v\u0103n b\u1ea3n)<\/strong><\/h3>\n\n\n\n<p><strong>MongoDB h\u1ed7 tr\u1ee3 text index \u0111\u1ec3 t\u00ecm ki\u1ebfm t\u1eeb kh\u00f3a trong c\u00e1c tr\u01b0\u1eddng d\u1ea1ng chu\u1ed7i. V\u00ed d\u1ee5:<\/strong> \u0111\u1ec3 t\u00ecm ng\u01b0\u1eddi d\u00f9ng c\u00f3 ch\u1ee9a t\u1eeb kh\u00f3a<code> \"developer\"<\/code> trong m\u00f4 t\u1ea3 (description), ta t\u1ea1o index nh\u01b0 sau:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>db.users.createIndex({ description: \"text\" })\ndb.users.find({ $text: { $search: \"developer\" } })<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Trong \u0111\u00f3:\n<ul class=\"wp-block-list\">\n<li><code>createIndex({ description: \"text\" })<\/code> cho ph\u00e9p t\u00ecm ki\u1ebfm to\u00e0n v\u0103n trong tr\u01b0\u1eddng <code>description<\/code>.<\/li>\n\n\n\n<li><code>$search: \"developer\"<\/code> s\u1ebd tr\u1ea3 v\u1ec1 t\u1ea5t c\u1ea3 document c\u00f3 ch\u1ee9a t\u1eeb kh\u00f3a \u201cdeveloper\u201d.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-xem-va-xoa-index\"><strong>Xem v\u00e0 X\u00f3a Index<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Xem danh s\u00e1ch index hi\u1ec7n c\u00f3:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>db.users.getIndexes()<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>X\u00f3a m\u1ed9t index:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>db.users.dropIndex(\"age_1\")<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Trong \u0111\u00f3: <code>\"age_1\"<\/code> l\u00e0 t\u00ean t\u1ef1 \u0111\u1ed9ng m\u00e0 MongoDB \u0111\u1eb7t cho index tr\u00ean tr\u01b0\u1eddng age v\u1edbi th\u1ee9 t\u1ef1 t\u0103ng d\u1ea7n.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-cac-l\u1ed7i-th\u01b0\u1eddng-g\u1eb7p-v\u1edbi-find\"><span class=\"ez-toc-section\" id=\"Cac_loi_thuong_gap_voi_find\"><\/span><strong>C\u00e1c l\u1ed7i th\u01b0\u1eddng g\u1eb7p v\u1edbi find()<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-1-nh\u1ea7m-l\u1eabn-gi\u1eefa-di\u1ec1u-ki\u1ec7n-va-field-projection\"><strong>1. Nh\u1ea7m l\u1eabn gi\u1eefa \u0111i\u1ec1u ki\u1ec7n v\u00e0 field projection<\/strong><\/h3>\n\n\n\n<p>M\u1ed9t s\u1ed1 ng\u01b0\u1eddi nh\u1ea7m r\u1eb1ng field projection c\u0169ng vi\u1ebft chung trong object \u0111i\u1ec1u ki\u1ec7n, d\u1eabn \u0111\u1ebfn k\u1ebft qu\u1ea3 kh\u00f4ng \u0111\u00fang. V\u00ed d\u1ee5 l\u1ed7i nh\u01b0 sau:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>db.users.find({ name: \"Alice\", age: 25, email: 1 })  \/\/  Sai<\/code><\/pre>\n\n\n\n<p>Trong \u0111\u00f3 <code>email: 1<\/code> \u0111\u00e1ng l\u1ebd ph\u1ea3i n\u1eb1m trong object projection. C\u00e1ch \u0111\u00fang nh\u01b0 sau:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ \u0110\u00daNG - t\u00e1ch r\u00f5 query v\u00e0 projection\ndb.users.find(\n  { name: \"Alice\", age: 25 },  \/\/ Query conditions\n  { email: 1 }                   \/\/ Projection\n)\n\n\/\/ C\u00e1c v\u00ed d\u1ee5 projection kh\u00e1c:\ndb.users.find(\n  { age: { $gt: 18 } },\n  { name: 1, email: 1, _id: 0 }  \/\/ Ch\u1ec9 l\u1ea5y name, email, b\u1ecf _id\n)\n\ndb.users.find(\n  {},\n  { password: 0 }  \/\/ L\u1ea5y t\u1ea5t c\u1ea3 fields TR\u1eea password\n)<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-2-khong-ki\u1ec3m-soat-s\u1ed1-l\u01b0\u1ee3ng-k\u1ebft-qu\u1ea3-tr\u1ea3-v\u1ec1\"><strong>2. Kh\u00f4ng ki\u1ec3m so\u00e1t s\u1ed1 l\u01b0\u1ee3ng k\u1ebft qu\u1ea3 tr\u1ea3 v\u1ec1<\/strong><\/h3>\n\n\n\n<p>M\u1eb7c \u0111\u1ecbnh <code>find()<\/code> s\u1ebd tr\u1ea3 v\u1ec1 <strong>to\u00e0n b\u1ed9 documents<\/strong> ph\u00f9 h\u1ee3p, d\u1ec5 g\u00e2y ngh\u1ebdn khi d\u1eef li\u1ec7u l\u1edbn. Ng\u01b0\u1eddi m\u1edbi th\u01b0\u1eddng qu\u00ean gi\u1edbi h\u1ea1n s\u1ed1 l\u01b0\u1ee3ng b\u1eb1ng <code>limit()<\/code>.<\/p>\n\n\n\n<p>V\u00ed d\u1ee5:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ NGUY HI\u1ec2M v\u1edbi collection l\u1edbn\ndb.users.find()\n\n\/\/ AN TO\u00c0N - gi\u1edbi h\u1ea1n s\u1ed1 l\u01b0\u1ee3ng\ndb.users.find().limit(10)  \/\/ Ch\u1ec9 l\u1ea5y 10 documents \u0111\u1ea7u ti\u00ean\n\n\/\/ K\u1ebft h\u1ee3p v\u1edbi sort \u0111\u1ec3 l\u1ea5y top N\ndb.users.find().sort({ createdAt: -1 }).limit(5)  \/\/ 5 users m\u1edbi nh\u1ea5t<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-3-khong-t\u1ea1o-index-khi-d\u1eef-li\u1ec7u-l\u1edbn\">3. <strong>Kh\u00f4ng t\u1ea1o index khi d\u1eef li\u1ec7u l\u1edbn<\/strong><\/h3>\n\n\n\n<p><code>find()<\/code> v\u1eabn ch\u1ea1y, nh\u01b0ng n\u1ebfu collection c\u00f3 h\u00e0ng tri\u1ec7u documents v\u00e0 kh\u00f4ng c\u00f3 index, th\u00ec s\u1ebd r\u1ea5t ch\u1eadm. \u0110\u00e2y kh\u00f4ng ph\u1ea3i l\u1ed7i c\u00fa ph\u00e1p, m\u00e0 l\u00e0 l\u1ed7i v\u1ec1 hi\u1ec7u n\u0103ng.&nbsp;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ Query ch\u1eadm v\u1edbi data l\u1edbn\ndb.users.find({ email: \"user@example.com\" })  \/\/ COLLSCAN\n\n\/\/ T\u1ea1o index tr\u01b0\u1edbc\ndb.users.createIndex({ email: 1 })\ndb.users.find({ email: \"user@example.com\" })  \/\/ IXSCAN - nhanh h\u01a1n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-cau-h\u1ecfi-th\u01b0\u1eddng-g\u1eb7p-v\u1ec1-mongodb-find\"><span class=\"ez-toc-section\" id=\"Cau_hoi_thuong_gap_ve_MongoDB_find\"><\/span><strong>C\u00e2u h\u1ecfi th\u01b0\u1eddng g\u1eb7p v\u1ec1 MongoDB find()<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-find-va-findone-khac-nhau-nh\u01b0-th\u1ebf-nao\">find()<strong> v\u00e0 <\/strong>findOne()<strong> kh\u00e1c nhau nh\u01b0 th\u1ebf n\u00e0o?<\/strong><\/h3>\n\n\n\n<p><code>find()<\/code> \u0111\u01b0\u1ee3c d\u00f9ng \u0111\u1ec3 truy v\u1ea5n nhi\u1ec1u documents c\u00f9ng l\u00fac. N\u1ebfu \u0111i\u1ec1u ki\u1ec7n kh\u1edbp v\u1edbi 10 documents th\u00ec <code>find()<\/code> s\u1ebd tr\u1ea3 v\u1ec1 c\u1ea3 10 documents \u0111\u00f3. Trong khi \u0111\u00f3, <code>findOne()<\/code> ch\u1ec9 tr\u1ea3 v\u1ec1 m\u1ed9t document \u0111\u1ea7u ti\u00ean kh\u1edbp v\u1edbi \u0111i\u1ec1u ki\u1ec7n t\u00ecm ki\u1ebfm, ngay c\u1ea3 khi c\u00f3 nhi\u1ec1u documents th\u1ecfa m\u00e3n.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-khi-nao-nen-dung-aggregate-thay-vi-find\"><strong>Khi n\u00e0o n\u00ean d\u00f9ng <\/strong>aggregate()<strong> thay v\u00ec <\/strong>find()<strong>?<\/strong><\/h3>\n\n\n\n<p><code>find()<\/code> ph\u00f9 h\u1ee3p cho nh\u1eefng truy v\u1ea5n c\u01a1 b\u1ea3n, v\u00ed d\u1ee5 l\u1ecdc theo \u0111i\u1ec1u ki\u1ec7n, l\u1ea5y d\u1eef li\u1ec7u, ho\u1eb7c k\u1ebft h\u1ee3p v\u1edbi <code>sort()<\/code>, <code>limit()<\/code>.<\/p>\n\n\n\n<p>Tuy nhi\u00ean, khi c\u1ea7n thao t\u00e1c ph\u1ee9c t\u1ea1p h\u01a1n nh\u01b0 nh\u00f3m d\u1eef li\u1ec7u (group by), t\u00ednh to\u00e1n (sum, avg, count\u2026) hay bi\u1ebfn \u0111\u1ed5i d\u1eef li\u1ec7u th\u00e0nh c\u1ea5u tr\u00fac m\u1edbi th\u00ec ta n\u00ean d\u00f9ng <code>aggregate()<\/code>. \u0110\u00e2y l\u00e0 c\u00f4ng c\u1ee5 m\u1ea1nh m\u1ebd h\u01a1n nhi\u1ec1u, gi\u00fap x\u00e2y d\u1ef1ng c\u00e1c pipeline \u0111\u1ec3 x\u1eed l\u00fd v\u00e0 ph\u00e2n t\u00edch d\u1eef li\u1ec7u ngay trong MongoDB, thay v\u00ec ph\u1ea3i l\u1ea5y d\u1eef li\u1ec7u v\u1ec1 v\u00e0 x\u1eed l\u00fd b\u1eb1ng code b\u00ean ngo\u00e0i.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-find-co-gi\u1edbi-h\u1ea1n-s\u1ed1-l\u01b0\u1ee3ng-documents-tr\u1ea3-v\u1ec1-khong\">find()<strong> c\u00f3 gi\u1edbi h\u1ea1n s\u1ed1 l\u01b0\u1ee3ng documents tr\u1ea3 v\u1ec1 kh\u00f4ng?<\/strong><\/h3>\n\n\n\n<p>M\u1eb7c \u0111\u1ecbnh, <code>find()<\/code> s\u1ebd tr\u1ea3 v\u1ec1 t\u1ea5t c\u1ea3 documents kh\u1edbp v\u1edbi \u0111i\u1ec1u ki\u1ec7n truy v\u1ea5n. N\u1ebfu collection c\u00f3 h\u00e0ng tri\u1ec7u b\u1ea3n ghi, k\u1ebft qu\u1ea3 c\u00f3 th\u1ec3 r\u1ea5t l\u1edbn v\u00e0 \u1ea3nh h\u01b0\u1edfng \u0111\u1ebfn hi\u1ec7u n\u0103ng.<\/p>\n\n\n\n<p>\u0110\u1ec3 tr\u00e1nh \u0111i\u1ec1u n\u00e0y, ta c\u00f3 th\u1ec3 d\u00f9ng th\u00eam:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>limit(n)<\/code><strong>:<\/strong> gi\u1edbi h\u1ea1n s\u1ed1 l\u01b0\u1ee3ng documents tr\u1ea3 v\u1ec1.<\/li>\n\n\n\n<li><code>skip(n)<\/code><strong>:<\/strong> b\u1ecf qua m\u1ed9t s\u1ed1 documents nh\u1ea5t \u0111\u1ecbnh tr\u01b0\u1edbc khi tr\u1ea3 v\u1ec1 k\u1ebft qu\u1ea3.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-vi-sao-find-khong-dung-index-ma-toi-da-t\u1ea1o-s\u1eb5n\"><strong>V\u00ec sao find() kh\u00f4ng d\u00f9ng index m\u00e0 t\u00f4i \u0111\u00e3 t\u1ea1o s\u1eb5n?<\/strong><\/h3>\n\n\n\n<p>Kh\u00f4ng ph\u1ea3i m\u1ecdi truy v\u1ea5n \u0111\u1ec1u t\u1ef1 \u0111\u1ed9ng t\u1eadn d\u1ee5ng index. C\u00f3 nhi\u1ec1u y\u1ebfu t\u1ed1 \u1ea3nh h\u01b0\u1edfng \u0111\u1ebfn vi\u1ec7c s\u1eed d\u1ee5ng index, ch\u1eb3ng h\u1ea1n nh\u01b0:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Th\u1ee9 t\u1ef1 c\u00e1c tr\u01b0\u1eddng trong index kh\u00f4ng kh\u1edbp v\u1edbi \u0111i\u1ec1u ki\u1ec7n truy v\u1ea5n.<\/li>\n\n\n\n<li>Ki\u1ec3u d\u1eef li\u1ec7u (data type) gi\u1eefa index v\u00e0 d\u1eef li\u1ec7u trong document kh\u00f4ng \u0111\u1ed3ng nh\u1ea5t.<\/li>\n\n\n\n<li>Thi\u1ebft l\u1eadp collation (c\u00e1ch so s\u00e1nh chu\u1ed7i) gi\u1eefa index v\u00e0 truy v\u1ea5n kh\u00f4ng ph\u00f9 h\u1ee3p.<\/li>\n<\/ul>\n\n\n\n<p>\u0110\u1ec3 ki\u1ec3m tra, b\u1ea1n c\u00f3 th\u1ec3 d\u00f9ng l\u1ec7nh:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>db.collection.find({ ... }).explain(\"executionStats\")<\/code><\/pre>\n\n\n\n<p>N\u1ebfu trong k\u1ebft qu\u1ea3 xu\u1ea5t hi\u1ec7n <code>IXSCAN<\/code>, ngh\u0129a l\u00e0 MongoDB \u0111ang s\u1eed d\u1ee5ng index. Ng\u01b0\u1ee3c l\u1ea1i, n\u1ebfu th\u1ea5y <code>COLLSCAN<\/code>, th\u00ec MongoDB \u0111ang th\u1ef1c hi\u1ec7n qu\u00e9t to\u00e0n b\u1ed9 collection, d\u1eabn \u0111\u1ebfn hi\u1ec7u su\u1ea5t ch\u1eadm h\u01a1n.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-con-tr\u1ecf-cursor-trong-mongodb-la-gi-t\u1ea1i-sao-find-khong-tr\u1ea3-v\u1ec1-ngay-m\u1ed9t-m\u1ea3ng-k\u1ebft-qu\u1ea3\"><strong>Con tr\u1ecf (cursor) trong MongoDB l\u00e0 g\u00ec? T\u1ea1i sao <\/strong>find()<strong> kh\u00f4ng tr\u1ea3 v\u1ec1 ngay m\u1ed9t m\u1ea3ng k\u1ebft qu\u1ea3?<\/strong><\/h3>\n\n\n\n<p>Trong MongoDB, khi ch\u1ea1y l\u1ec7nh <code>find()<\/code> k\u1ebft qu\u1ea3 kh\u00f4ng ph\u1ea3i l\u00e0 m\u1ed9t m\u1ea3ng ch\u1ee9a to\u00e0n b\u1ed9 d\u1eef li\u1ec7u m\u00e0 l\u00e0 m\u1ed9t cursor (con tr\u1ecf). Cursor gi\u1ed1ng nh\u01b0 m\u1ed9t \u201c\u1ed1ng d\u1eabn d\u1eef li\u1ec7u\u201d, cho ph\u00e9p MongoDB tr\u1ea3 v\u1ec1 t\u00e0i li\u1ec7u theo t\u1eebng l\u00f4 (batch) thay v\u00ec t\u1ea3i h\u1ebft t\u1ea5t c\u1ea3 c\u00f9ng l\u00fac. V\u00ec khi l\u00e0m vi\u1ec7c v\u1edbi c\u00e1c collection c\u00f3 h\u00e0ng ngh\u00ecn ho\u1eb7c h\u00e0ng tri\u1ec7u b\u1ea3n ghi, vi\u1ec7c tr\u1ea3 v\u1ec1 to\u00e0n b\u1ed9 d\u1eef li\u1ec7u ngay l\u1eadp t\u1ee9c s\u1ebd t\u1ed1n nhi\u1ec1u b\u1ed9 nh\u1edb v\u00e0 l\u00e0m ch\u1eadm \u1ee9ng d\u1ee5ng. V\u1edbi cursor, MongoDB ch\u1ec9 l\u1ea5y d\u1eef li\u1ec7u khi b\u1ea1n c\u1ea7n, hay c\u00f2n g\u1ecdi l\u00e0 lazy loading &#8211; l\u00e0 c\u01a1 ch\u1ebf gi\u00fap ti\u1ebft ki\u1ec7m t\u00e0i nguy\u00ean v\u00e0 t\u0103ng hi\u1ec7u su\u1ea5t.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-t\u1ed5ng-k\u1ebft\"><span class=\"ez-toc-section\" id=\"Tong_ket\"><\/span><strong>T\u1ed5ng k\u1ebft<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Ph\u01b0\u01a1ng th\u1ee9c <code>find()<\/code>&nbsp;trong MongoDB kh\u00f4ng ch\u1ec9 \u0111\u01a1n gi\u1ea3n l\u00e0 l\u1ea5y d\u1eef li\u1ec7u m\u00e0 c\u00f2n mang l\u1ea1i nhi\u1ec1u t\u00f9y ch\u1ecdn m\u1ea1nh m\u1ebd \u0111\u1ec3 l\u1ecdc, t\u00ecm ki\u1ebfm v\u00e0 t\u1ed1i \u01b0u hi\u1ec7u n\u0103ng truy v\u1ea5n. T\u1eeb c\u00e1c \u0111i\u1ec1u ki\u1ec7n c\u01a1 b\u1ea3n, to\u00e1n t\u1eed logic cho \u0111\u1ebfn t\u00ecm ki\u1ebfm n\u00e2ng cao b\u1eb1ng regex v\u00e0 text search, <code>find()<\/code>&nbsp; l\u00e0 c\u00f4ng c\u1ee5 thi\u1ebft y\u1ebfu m\u00e0 b\u1ea5t k\u1ef3 ai l\u00e0m vi\u1ec7c v\u1edbi MongoDB c\u0169ng c\u1ea7n n\u1eafm v\u1eefng. Khi \u0111\u00e3 quen thu\u1ed9c v\u1edbi <code>find()<\/code>, b\u1ea1n s\u1ebd d\u1ec5 d\u00e0ng h\u01a1n trong vi\u1ec7c ph\u00e2n t\u00edch d\u1eef li\u1ec7u, x\u00e2y d\u1ef1ng \u1ee9ng d\u1ee5ng v\u00e0 t\u1ed1i \u01b0u h\u1ec7 th\u1ed1ng.&nbsp;<\/p>\n\n\n\n<p>ITviec hy v\u1ecdng b\u00e0i vi\u1ebft tr\u00ean \u0111\u00e3 cung c\u1ea5p cho b\u1ea1n nh\u1eefng ki\u1ebfn th\u1ee9c b\u1ed5 \u00edch v\u1ec1 <code>find()<\/code> trong MongoDB.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>N\u1ebfu coi MongoDB l\u00e0 m\u1ed9t \u201ckho t\u00e0ng d\u1eef li\u1ec7u\u201d, th\u00ec MongoDB find() ch\u00ednh l\u00e0 chi\u1ebfc ch\u00eca kh\u00f3a gi\u00fap b\u1ea1n m\u1edf ra \u0111\u00fang ng\u0103n t\u1ee7 m\u00ecnh c\u1ea7n. T\u1eeb vi\u1ec7c l\u1ea5y to\u00e0n b\u1ed9 d\u1eef li\u1ec7u, l\u1ecdc theo \u0111i\u1ec1u ki\u1ec7n, cho \u0111\u1ebfn \u00e1p d\u1ee5ng c\u00e1c to\u00e1n t\u1eed n\u00e2ng cao, t\u1ea5t c\u1ea3 \u0111\u1ec1u c\u00f3 th\u1ec3 b\u1eaft \u0111\u1ea7u ch\u1ec9 v\u1edbi [&hellip;]<\/p>\n","protected":false},"author":209,"featured_media":93098,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_gspb_post_css":"","footnotes":""},"categories":[109,7226],"tags":[],"class_list":["post-92785","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-chuyen-mon-it","category-database"],"blocksy_meta":[],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.8 (Yoast SEO v27.9) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>MongoDB find(): Chi\u1ebfc ch\u00eca kh\u00f3a &quot;v\u1ea1n n\u0103ng&quot; trong MongoDB - ITviec Blog<\/title>\n<meta name=\"description\" content=\"Kh\u00e1m ph\u00e1 c\u00e1ch d\u00f9ng find() trong MongoDB \u0111\u1ec3 truy v\u1ea5n d\u1eef li\u1ec7u hi\u1ec7u qu\u1ea3. T\u1eeb c\u00fa ph\u00e1p c\u01a1 b\u1ea3n \u0111\u1ebfn n\u00e2ng cao, k\u00e8m v\u00ed d\u1ee5 d\u1ec5 hi\u1ec3u.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/itviec.com\/blog\/huong-dan-su-dung-mongodb-find\/\" \/>\n<meta property=\"og:locale\" content=\"vi_VN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"MongoDB find(): Chi\u1ebfc ch\u00eca kh\u00f3a &quot;v\u1ea1n n\u0103ng&quot; trong MongoDB\" \/>\n<meta property=\"og:description\" content=\"N\u1ebfu coi MongoDB l\u00e0 m\u1ed9t \u201ckho t\u00e0ng d\u1eef li\u1ec7u\u201d, th\u00ec MongoDB find() ch\u00ednh l\u00e0 chi\u1ebfc ch\u00eca kh\u00f3a gi\u00fap b\u1ea1n m\u1edf ra \u0111\u00fang ng\u0103n t\u1ee7 m\u00ecnh c\u1ea7n. T\u1eeb vi\u1ec7c l\u1ea5y to\u00e0n b\u1ed9 d\u1eef li\u1ec7u,\" \/>\n<meta property=\"og:url\" content=\"https:\/\/itviec.com\/blog\/huong-dan-su-dung-mongodb-find\/\" \/>\n<meta property=\"og:site_name\" content=\"ITviec Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/ITviec\" \/>\n<meta property=\"article:published_time\" content=\"2025-11-24T04:33:48+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-11-24T04:33:51+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2025\/11\/mongodb-find-scaled.png\" \/>\n\t<meta property=\"og:image:width\" content=\"800\" \/>\n\t<meta property=\"og:image:height\" content=\"421\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"M\u1ef9 Duy\u00ean\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@ITviec\" \/>\n<meta name=\"twitter:site\" content=\"@ITviec\" \/>\n<meta name=\"twitter:label1\" content=\"\u0110\u01b0\u1ee3c vi\u1ebft b\u1edfi\" \/>\n\t<meta name=\"twitter:data1\" content=\"M\u1ef9 Duy\u00ean\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u01af\u1edbc t\u00ednh th\u1eddi gian \u0111\u1ecdc\" \/>\n\t<meta name=\"twitter:data2\" content=\"14 ph\u00fat\" \/>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"MongoDB find(): Chi\u1ebfc ch\u00eca kh\u00f3a \"v\u1ea1n n\u0103ng\" trong MongoDB - ITviec Blog","description":"Kh\u00e1m ph\u00e1 c\u00e1ch d\u00f9ng find() trong MongoDB \u0111\u1ec3 truy v\u1ea5n d\u1eef li\u1ec7u hi\u1ec7u qu\u1ea3. T\u1eeb c\u00fa ph\u00e1p c\u01a1 b\u1ea3n \u0111\u1ebfn n\u00e2ng cao, k\u00e8m v\u00ed d\u1ee5 d\u1ec5 hi\u1ec3u.","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:\/\/itviec.com\/blog\/huong-dan-su-dung-mongodb-find\/","og_locale":"vi_VN","og_type":"article","og_title":"MongoDB find(): Chi\u1ebfc ch\u00eca kh\u00f3a \"v\u1ea1n n\u0103ng\" trong MongoDB","og_description":"N\u1ebfu coi MongoDB l\u00e0 m\u1ed9t \u201ckho t\u00e0ng d\u1eef li\u1ec7u\u201d, th\u00ec MongoDB find() ch\u00ednh l\u00e0 chi\u1ebfc ch\u00eca kh\u00f3a gi\u00fap b\u1ea1n m\u1edf ra \u0111\u00fang ng\u0103n t\u1ee7 m\u00ecnh c\u1ea7n. T\u1eeb vi\u1ec7c l\u1ea5y to\u00e0n b\u1ed9 d\u1eef li\u1ec7u,","og_url":"https:\/\/itviec.com\/blog\/huong-dan-su-dung-mongodb-find\/","og_site_name":"ITviec Blog","article_publisher":"https:\/\/www.facebook.com\/ITviec","article_published_time":"2025-11-24T04:33:48+00:00","article_modified_time":"2025-11-24T04:33:51+00:00","og_image":[{"width":800,"height":421,"url":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2025\/11\/mongodb-find-scaled.png","type":"image\/png"}],"author":"M\u1ef9 Duy\u00ean","twitter_card":"summary_large_image","twitter_creator":"@ITviec","twitter_site":"@ITviec","twitter_misc":{"\u0110\u01b0\u1ee3c vi\u1ebft b\u1edfi":"M\u1ef9 Duy\u00ean","\u01af\u1edbc t\u00ednh th\u1eddi gian \u0111\u1ecdc":"14 ph\u00fat"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/itviec.com\/blog\/huong-dan-su-dung-mongodb-find\/#article","isPartOf":{"@id":"https:\/\/itviec.com\/blog\/huong-dan-su-dung-mongodb-find\/"},"author":{"name":"M\u1ef9 Duy\u00ean","@id":"https:\/\/itviec.com\/blog\/#\/schema\/person\/73733c0725c7e39e696a896bd1abe2d7"},"headline":"MongoDB find(): Chi\u1ebfc ch\u00eca kh\u00f3a &#8220;v\u1ea1n n\u0103ng&#8221; trong MongoDB","datePublished":"2025-11-24T04:33:48+00:00","dateModified":"2025-11-24T04:33:51+00:00","mainEntityOfPage":{"@id":"https:\/\/itviec.com\/blog\/huong-dan-su-dung-mongodb-find\/"},"wordCount":3521,"publisher":{"@id":"https:\/\/itviec.com\/blog\/#organization"},"image":{"@id":"https:\/\/itviec.com\/blog\/huong-dan-su-dung-mongodb-find\/#primaryimage"},"thumbnailUrl":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2025\/11\/mongodb-find-scaled.png","articleSection":["Chuy\u00ean m\u00f4n IT","Database"],"inLanguage":"vi"},{"@type":"WebPage","@id":"https:\/\/itviec.com\/blog\/huong-dan-su-dung-mongodb-find\/","url":"https:\/\/itviec.com\/blog\/huong-dan-su-dung-mongodb-find\/","name":"MongoDB find(): Chi\u1ebfc ch\u00eca kh\u00f3a \"v\u1ea1n n\u0103ng\" trong MongoDB - ITviec Blog","isPartOf":{"@id":"https:\/\/itviec.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/itviec.com\/blog\/huong-dan-su-dung-mongodb-find\/#primaryimage"},"image":{"@id":"https:\/\/itviec.com\/blog\/huong-dan-su-dung-mongodb-find\/#primaryimage"},"thumbnailUrl":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2025\/11\/mongodb-find-scaled.png","datePublished":"2025-11-24T04:33:48+00:00","dateModified":"2025-11-24T04:33:51+00:00","description":"Kh\u00e1m ph\u00e1 c\u00e1ch d\u00f9ng find() trong MongoDB \u0111\u1ec3 truy v\u1ea5n d\u1eef li\u1ec7u hi\u1ec7u qu\u1ea3. T\u1eeb c\u00fa ph\u00e1p c\u01a1 b\u1ea3n \u0111\u1ebfn n\u00e2ng cao, k\u00e8m v\u00ed d\u1ee5 d\u1ec5 hi\u1ec3u.","breadcrumb":{"@id":"https:\/\/itviec.com\/blog\/huong-dan-su-dung-mongodb-find\/#breadcrumb"},"inLanguage":"vi","potentialAction":[{"@type":"ReadAction","target":["https:\/\/itviec.com\/blog\/huong-dan-su-dung-mongodb-find\/"]}]},{"@type":"ImageObject","inLanguage":"vi","@id":"https:\/\/itviec.com\/blog\/huong-dan-su-dung-mongodb-find\/#primaryimage","url":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2025\/11\/mongodb-find-scaled.png","contentUrl":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2025\/11\/mongodb-find-scaled.png","width":800,"height":421,"caption":"mongodb find - itviec blog"},{"@type":"BreadcrumbList","@id":"https:\/\/itviec.com\/blog\/huong-dan-su-dung-mongodb-find\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Chuy\u00ean m\u00f4n IT","item":"https:\/\/itviec.com\/blog\/chuyen-mon-it\/"},{"@type":"ListItem","position":2,"name":"MongoDB find(): Chi\u1ebfc ch\u00eca kh\u00f3a &#8220;v\u1ea1n n\u0103ng&#8221; trong MongoDB"}]},{"@type":"WebSite","@id":"https:\/\/itviec.com\/blog\/#website","url":"https:\/\/itviec.com\/blog\/","name":"ITviec Blog","description":"IT Jobs &amp; People in Vietnam","publisher":{"@id":"https:\/\/itviec.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/itviec.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"vi"},{"@type":"Organization","@id":"https:\/\/itviec.com\/blog\/#organization","name":"ITviec","url":"https:\/\/itviec.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"vi","@id":"https:\/\/itviec.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2018\/12\/itviec-black-square-facebook.png","contentUrl":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2018\/12\/itviec-black-square-facebook.png","width":1800,"height":1800,"caption":"ITviec"},"image":{"@id":"https:\/\/itviec.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/ITviec","https:\/\/x.com\/ITviec","https:\/\/www.linkedin.com\/company\/itviec","https:\/\/www.youtube.com\/channel\/UCYthAQ3bcGr57M_ag5gHDvQ"]},{"@type":"Person","@id":"https:\/\/itviec.com\/blog\/#\/schema\/person\/73733c0725c7e39e696a896bd1abe2d7","name":"M\u1ef9 Duy\u00ean","image":{"@type":"ImageObject","inLanguage":"vi","@id":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2024\/03\/Author_Duyen-Tran-120x120.jpg","url":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2024\/03\/Author_Duyen-Tran-120x120.jpg","contentUrl":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2024\/03\/Author_Duyen-Tran-120x120.jpg","caption":"M\u1ef9 Duy\u00ean"},"url":"https:\/\/itviec.com\/blog\/author\/my-duyen\/"}]}},"_links":{"self":[{"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/posts\/92785","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/users\/209"}],"replies":[{"embeddable":true,"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/comments?post=92785"}],"version-history":[{"count":5,"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/posts\/92785\/revisions"}],"predecessor-version":[{"id":93099,"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/posts\/92785\/revisions\/93099"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/media\/93098"}],"wp:attachment":[{"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/media?parent=92785"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/categories?post=92785"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/tags?post=92785"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}