<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:series="https://publishpress.com/"
	>

<channel>
	<title>Le Van Ninh, Author at Tomoshare</title>
	<atom:link href="https://blog.tomosia.com.vn/author/levanninh/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.tomosia.com.vn/author/levanninh/</link>
	<description>Kênh chia sẻ kiến thức Tomosia Việt Nam</description>
	<lastBuildDate>Wed, 27 Dec 2023 06:24:58 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://blog.tomosia.com.vn/wp-content/uploads/2023/09/cropped-icon-32x32.png</url>
	<title>Le Van Ninh, Author at Tomoshare</title>
	<link>https://blog.tomosia.com.vn/author/levanninh/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Chức năng replica set trong MongoDB (P2)</title>
		<link>https://blog.tomosia.com.vn/chuc-nang-replica-set-trong-mongodb-p2/</link>
					<comments>https://blog.tomosia.com.vn/chuc-nang-replica-set-trong-mongodb-p2/#comments</comments>
		
		<dc:creator><![CDATA[Le Van Ninh]]></dc:creator>
		<pubDate>Wed, 27 Dec 2023 04:36:13 +0000</pubDate>
				<category><![CDATA[MongoDB]]></category>
		<guid isPermaLink="false">https://blog.tomosia.com.vn/?p=2886</guid>

					<description><![CDATA[<p>Replica Set là Gì? Replica Set là một tập hợp các máy chủ MongoDB được cấu hình để&#8230;</p>
<p>The post <a href="https://blog.tomosia.com.vn/chuc-nang-replica-set-trong-mongodb-p2/">Chức năng replica set trong MongoDB (P2)</a> appeared first on <a href="https://blog.tomosia.com.vn">Tomoshare</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h2 id="replica-set-la-gi" class="wp-block-heading">Replica Set là Gì?</h2>



<p>Replica Set là một tập hợp các máy chủ MongoDB được cấu hình để làm việc cùng nhau và duy trì một bản sao đồng bộ của dữ liệu. Nó giúp cung cấp tính năng sao lưu, khôi phục và chịu lỗi.</p>



<h2 id="giai-thich-cac-thuat-ngu-quan-trong" class="wp-block-heading">Giải Thích Các Thuật Ngữ Quan Trọng:</h2>



<ul class="wp-block-list">
<li><strong>Replica Set (<code>myReplicaSet</code>):</strong> Tên của replica set. Đặt tên này theo ý muốn của bạn.</li>



<li><strong>Members:</strong> Danh sách các thành viên (máy chủ) trong replica set. Mỗi thành viên có một ID và địa chỉ host.</li>



<li><strong>Primary Node:</strong> Một trong các máy chủ chịu trách nhiệm chính cho việc đọc và ghi dữ liệu.</li>



<li><strong>Secondary Node:</strong> Các máy chủ khác trong replica set, sao chép dữ liệu từ primary node và có thể đảm nhiệm chức năng đọc.</li>



<li><strong>Arbiter:</strong> Một thành viên đặc biệt chỉ chịu trách nhiệm trong quá trình bầu chọn giữa các primary và secondary nodes.</li>



<li><strong>rs.initiate():</strong> Lệnh để khởi tạo replica set.</li>



<li><strong>rs.status():</strong> Lệnh để kiểm tra trạng thái của replica set.</li>
</ul>



<h2 id="cau-hinh" class="wp-block-heading">Cấu hình</h2>



<p><strong>Start máy chủ</strong></p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:8.4296875px;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">Zsh</span><span role="button" tabindex="0" data-code="mongod --port 27017 --dbpath /path/to/data/db1 --replSet myReplicaSet
mongod --port 27018 --dbpath /path/to/data/db2 --replSet myReplicaSet
mongod --port 27019 --dbpath /path/to/data/db3 --replSet myReplicaSet" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #62E884">mongod</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">--port</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">27017</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">--dbpath</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">/path/to/data/db1</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">--replSet</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">myReplicaSet</span></span>
<span class="line"><span style="color: #62E884">mongod</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">--port</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">27018</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">--dbpath</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">/path/to/data/db2</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">--replSet</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">myReplicaSet</span></span>
<span class="line"><span style="color: #62E884">mongod</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">--port</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">27019</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">--dbpath</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">/path/to/data/db3</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">--replSet</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">myReplicaSet</span></span></code></pre></div>



<p><strong>Connect tới máy chủ</strong></p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:8.4296875px;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">Zsh</span><span role="button" tabindex="0" data-code="mongo --host localhost:27017" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #62E884">mongo</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">--host</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">localhost:27017</span></span></code></pre></div>



<p><strong>Khởi tạo replica set</strong></p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:16.859375px;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">YAML</span><span role="button" tabindex="0" data-code="rs.initiate(
   {
      _id: &quot;myReplicaSet&quot;,
      members: [
         { _id: 0, host: &quot;localhost:27017&quot; },
         { _id: 1, host: &quot;localhost:27018&quot; },
         { _id: 2, host: &quot;localhost:27019&quot; }
      ]
   }
)

# Or

rs.add(&quot;localhost:27018&quot;)
{
	&quot;ok&quot; : 1,
	&quot;$clusterTime&quot; : {
		&quot;clusterTime&quot; : Timestamp(1703576990, 1),
		&quot;signature&quot; : {
			&quot;hash&quot; : BinData(0,&quot;AAAAAAAAAAAAAAAAAAAAAAAAAAA=&quot;),
			&quot;keyId&quot; : NumberLong(0)
		}
	},
	&quot;operationTime&quot; : Timestamp(1703576990, 1)
}

rs.add(&quot;localhost:27019&quot;)
{
	&quot;ok&quot; : 1,
	&quot;$clusterTime&quot; : {
		&quot;clusterTime&quot; : Timestamp(1703577014, 1),
		&quot;signature&quot; : {
			&quot;hash&quot; : BinData(0,&quot;AAAAAAAAAAAAAAAAAAAAAAAAAAA=&quot;),
			&quot;keyId&quot; : NumberLong(0)
		}
	},
	&quot;operationTime&quot; : Timestamp(1703577014, 1)
}" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #E7EE98">rs.initiate(</span></span>
<span class="line"><span style="color: #F6F6F4">   {</span></span>
<span class="line"><span style="color: #F6F6F4">      </span><span style="color: #97E1F1">_id</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">myReplicaSet</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4">,</span></span>
<span class="line"><span style="color: #F6F6F4">      </span><span style="color: #97E1F1">members</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> [</span></span>
<span class="line"><span style="color: #F6F6F4">         { </span><span style="color: #97E1F1">_id</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">0</span><span style="color: #F6F6F4">, </span><span style="color: #97E1F1">host</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">localhost:27017</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> },</span></span>
<span class="line"><span style="color: #F6F6F4">         { </span><span style="color: #97E1F1">_id</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">1</span><span style="color: #F6F6F4">, </span><span style="color: #97E1F1">host</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">localhost:27018</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> },</span></span>
<span class="line"><span style="color: #F6F6F4">         { </span><span style="color: #97E1F1">_id</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">2</span><span style="color: #F6F6F4">, </span><span style="color: #97E1F1">host</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">localhost:27019</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> }</span></span>
<span class="line"><span style="color: #F6F6F4">      ]</span></span>
<span class="line"><span style="color: #F6F6F4">   }</span></span>
<span class="line"><span style="color: #E7EE98">)</span></span>
<span class="line"></span>
<span class="line"><span style="color: #7B7F8B"># Or</span></span>
<span class="line"></span>
<span class="line"><span style="color: #E7EE98">rs.add(&quot;localhost:27018&quot;)</span></span>
<span class="line"><span style="color: #F6F6F4">{</span></span>
<span class="line"><span style="color: #F6F6F4">	</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">ok</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">1</span><span style="color: #F6F6F4">,</span></span>
<span class="line"><span style="color: #F6F6F4">	</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">$clusterTime</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> {</span></span>
<span class="line"><span style="color: #F6F6F4">		</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">clusterTime</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">Timestamp(1703576990</span><span style="color: #F6F6F4">, </span><span style="color: #E7EE98">1)</span><span style="color: #F6F6F4">,</span></span>
<span class="line"><span style="color: #F6F6F4">		</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">signature</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> {</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">hash</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">BinData(0</span><span style="color: #F6F6F4">,</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">AAAAAAAAAAAAAAAAAAAAAAAAAAA=</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">)</span><span style="color: #F6F6F4">,</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">keyId</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">NumberLong(0)</span></span>
<span class="line"><span style="color: #F6F6F4">		}</span></span>
<span class="line"><span style="color: #F6F6F4">	},</span></span>
<span class="line"><span style="color: #F6F6F4">	</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">operationTime</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">Timestamp(1703576990</span><span style="color: #F6F6F4">, </span><span style="color: #E7EE98">1)</span></span>
<span class="line"><span style="color: #F6F6F4">}</span></span>
<span class="line"></span>
<span class="line"><span style="color: #E7EE98">rs.add(&quot;localhost:27019&quot;)</span></span>
<span class="line"><span style="color: #F6F6F4">{</span></span>
<span class="line"><span style="color: #F6F6F4">	</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">ok</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">1</span><span style="color: #F6F6F4">,</span></span>
<span class="line"><span style="color: #F6F6F4">	</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">$clusterTime</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> {</span></span>
<span class="line"><span style="color: #F6F6F4">		</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">clusterTime</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">Timestamp(1703577014</span><span style="color: #F6F6F4">, </span><span style="color: #E7EE98">1)</span><span style="color: #F6F6F4">,</span></span>
<span class="line"><span style="color: #F6F6F4">		</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">signature</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> {</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">hash</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">BinData(0</span><span style="color: #F6F6F4">,</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">AAAAAAAAAAAAAAAAAAAAAAAAAAA=</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">)</span><span style="color: #F6F6F4">,</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">keyId</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">NumberLong(0)</span></span>
<span class="line"><span style="color: #F6F6F4">		}</span></span>
<span class="line"><span style="color: #F6F6F4">	},</span></span>
<span class="line"><span style="color: #F6F6F4">	</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">operationTime</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">Timestamp(1703577014</span><span style="color: #F6F6F4">, </span><span style="color: #E7EE98">1)</span></span>
<span class="line"><span style="color: #F6F6F4">}</span></span></code></pre></div>



<p><strong>Kiểm Tra Trạng Thái Replica Set</strong></p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:25.2890625px;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">Zsh</span><span role="button" tabindex="0" data-code="rs.status()

{
	&quot;set&quot; : &quot;myReplicaSet&quot;,
	&quot;date&quot; : ISODate(&quot;2023-12-26T07:51:22.433Z&quot;),
	&quot;myState&quot; : 1,
	&quot;term&quot; : NumberLong(6),
	&quot;syncSourceHost&quot; : &quot;&quot;,
	&quot;syncSourceId&quot; : -1,
	&quot;heartbeatIntervalMillis&quot; : NumberLong(2000),
	&quot;majorityVoteCount&quot; : 2,
	&quot;writeMajorityCount&quot; : 2,
	&quot;votingMembersCount&quot; : 3,
	&quot;writableVotingMembersCount&quot; : 3,
	&quot;optimes&quot; : {
		&quot;lastCommittedOpTime&quot; : {
			&quot;ts&quot; : Timestamp(1703577081, 1),
			&quot;t&quot; : NumberLong(6)
		},
		&quot;lastCommittedWallTime&quot; : ISODate(&quot;2023-12-26T07:51:21.974Z&quot;),
		&quot;readConcernMajorityOpTime&quot; : {
			&quot;ts&quot; : Timestamp(1703577081, 1),
			&quot;t&quot; : NumberLong(6)
		},
		&quot;appliedOpTime&quot; : {
			&quot;ts&quot; : Timestamp(1703577081, 1),
			&quot;t&quot; : NumberLong(6)
		},
		&quot;durableOpTime&quot; : {
			&quot;ts&quot; : Timestamp(1703577081, 1),
			&quot;t&quot; : NumberLong(6)
		},
		&quot;lastAppliedWallTime&quot; : ISODate(&quot;2023-12-26T07:51:21.974Z&quot;),
		&quot;lastDurableWallTime&quot; : ISODate(&quot;2023-12-26T07:51:21.974Z&quot;)
	},
	&quot;lastStableRecoveryTimestamp&quot; : Timestamp(1703577061, 1),
	&quot;electionCandidateMetrics&quot; : {
		&quot;lastElectionReason&quot; : &quot;electionTimeout&quot;,
		&quot;lastElectionDate&quot; : ISODate(&quot;2023-12-26T07:42:21.741Z&quot;),
		&quot;electionTerm&quot; : NumberLong(6),
		&quot;lastCommittedOpTimeAtElection&quot; : {
			&quot;ts&quot; : Timestamp(0, 0),
			&quot;t&quot; : NumberLong(-1)
		},
		&quot;lastSeenOpTimeAtElection&quot; : {
			&quot;ts&quot; : Timestamp(1703576189, 1),
			&quot;t&quot; : NumberLong(5)
		},
		&quot;numVotesNeeded&quot; : 2,
		&quot;priorityAtElection&quot; : 1,
		&quot;electionTimeoutMillis&quot; : NumberLong(10000),
		&quot;numCatchUpOps&quot; : NumberLong(0),
		&quot;newTermStartDate&quot; : ISODate(&quot;2023-12-26T07:42:21.788Z&quot;),
		&quot;wMajorityWriteAvailabilityDate&quot; : ISODate(&quot;2023-12-26T07:42:22.347Z&quot;)
	},
	&quot;members&quot; : [
		{
			&quot;_id&quot; : 2,
			&quot;name&quot; : &quot;localhost:27017&quot;,
			&quot;health&quot; : 1,
			&quot;state&quot; : 1,
			&quot;stateStr&quot; : &quot;PRIMARY&quot;,
			&quot;uptime&quot; : 553,
			&quot;optime&quot; : {
				&quot;ts&quot; : Timestamp(1703577081, 1),
				&quot;t&quot; : NumberLong(6)
			},
			&quot;optimeDate&quot; : ISODate(&quot;2023-12-26T07:51:21Z&quot;),
			&quot;lastAppliedWallTime&quot; : ISODate(&quot;2023-12-26T07:51:21.974Z&quot;),
			&quot;lastDurableWallTime&quot; : ISODate(&quot;2023-12-26T07:51:21.974Z&quot;),
			&quot;syncSourceHost&quot; : &quot;&quot;,
			&quot;syncSourceId&quot; : -1,
			&quot;infoMessage&quot; : &quot;&quot;,
			&quot;electionTime&quot; : Timestamp(1703576541, 1),
			&quot;electionDate&quot; : ISODate(&quot;2023-12-26T07:42:21Z&quot;),
			&quot;configVersion&quot; : 17,
			&quot;configTerm&quot; : 6,
			&quot;self&quot; : true,
			&quot;lastHeartbeatMessage&quot; : &quot;&quot;
		},
		{
			&quot;_id&quot; : 3,
			&quot;name&quot; : &quot;localhost:27018&quot;,
			&quot;health&quot; : 1,
			&quot;state&quot; : 2,
			&quot;stateStr&quot; : &quot;SECONDARY&quot;,
			&quot;uptime&quot; : 88,
			&quot;optime&quot; : {
				&quot;ts&quot; : Timestamp(1703577071, 1),
				&quot;t&quot; : NumberLong(6)
			},
			&quot;optimeDurable&quot; : {
				&quot;ts&quot; : Timestamp(1703577071, 1),
				&quot;t&quot; : NumberLong(6)
			},
			&quot;optimeDate&quot; : ISODate(&quot;2023-12-26T07:51:11Z&quot;),
			&quot;optimeDurableDate&quot; : ISODate(&quot;2023-12-26T07:51:11Z&quot;),
			&quot;lastAppliedWallTime&quot; : ISODate(&quot;2023-12-26T07:51:21.974Z&quot;),
			&quot;lastDurableWallTime&quot; : ISODate(&quot;2023-12-26T07:51:21.974Z&quot;),
			&quot;lastHeartbeat&quot; : ISODate(&quot;2023-12-26T07:51:20.928Z&quot;),
			&quot;lastHeartbeatRecv&quot; : ISODate(&quot;2023-12-26T07:51:20.928Z&quot;),
			&quot;pingMs&quot; : NumberLong(0),
			&quot;lastHeartbeatMessage&quot; : &quot;&quot;,
			&quot;syncSourceHost&quot; : &quot;localhost:27017&quot;,
			&quot;syncSourceId&quot; : 2,
			&quot;infoMessage&quot; : &quot;&quot;,
			&quot;configVersion&quot; : 17,
			&quot;configTerm&quot; : 6
		},
		{
			&quot;_id&quot; : 4,
			&quot;name&quot; : &quot;localhost:27019&quot;,
			&quot;health&quot; : 1,
			&quot;state&quot; : 2,
			&quot;stateStr&quot; : &quot;SECONDARY&quot;,
			&quot;uptime&quot; : 65,
			&quot;optime&quot; : {
				&quot;ts&quot; : Timestamp(1703577071, 1),
				&quot;t&quot; : NumberLong(6)
			},
			&quot;optimeDurable&quot; : {
				&quot;ts&quot; : Timestamp(1703577071, 1),
				&quot;t&quot; : NumberLong(6)
			},
			&quot;optimeDate&quot; : ISODate(&quot;2023-12-26T07:51:11Z&quot;),
			&quot;optimeDurableDate&quot; : ISODate(&quot;2023-12-26T07:51:11Z&quot;),
			&quot;lastAppliedWallTime&quot; : ISODate(&quot;2023-12-26T07:51:21.974Z&quot;),
			&quot;lastDurableWallTime&quot; : ISODate(&quot;2023-12-26T07:51:21.974Z&quot;),
			&quot;lastHeartbeat&quot; : ISODate(&quot;2023-12-26T07:51:20.929Z&quot;),
			&quot;lastHeartbeatRecv&quot; : ISODate(&quot;2023-12-26T07:51:20.981Z&quot;),
			&quot;pingMs&quot; : NumberLong(0),
			&quot;lastHeartbeatMessage&quot; : &quot;&quot;,
			&quot;syncSourceHost&quot; : &quot;localhost:27018&quot;,
			&quot;syncSourceId&quot; : 3,
			&quot;infoMessage&quot; : &quot;&quot;,
			&quot;configVersion&quot; : 17,
			&quot;configTerm&quot; : 6
		}
	],
	&quot;ok&quot; : 1,
	&quot;$clusterTime&quot; : {
		&quot;clusterTime&quot; : Timestamp(1703577081, 1),
		&quot;signature&quot; : {
			&quot;hash&quot; : BinData(0,&quot;AAAAAAAAAAAAAAAAAAAAAAAAAAA=&quot;),
			&quot;keyId&quot; : NumberLong(0)
		}
	},
	&quot;operationTime&quot; : Timestamp(1703577081, 1)
}" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #62E884">rs.status</span><span style="color: #F6F6F4">()</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F6F6F4">{</span></span>
<span class="line"><span style="color: #F6F6F4">	</span><span style="color: #62E884">&quot;set&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">myReplicaSet</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">	</span><span style="color: #62E884">&quot;date&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">ISODate</span><span style="color: #F6F6F4">(</span><span style="color: #62E884">&quot;2023-12-26T07:51:22.433Z&quot;</span><span style="color: #F6F6F4">)</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">	</span><span style="color: #62E884">&quot;myState&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">1</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">	</span><span style="color: #62E884">&quot;term&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">NumberLong</span><span style="color: #F6F6F4">(</span><span style="color: #62E884">6</span><span style="color: #F6F6F4">)</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">	</span><span style="color: #62E884">&quot;syncSourceHost&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;&quot;</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">	</span><span style="color: #62E884">&quot;syncSourceId&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">-1,</span></span>
<span class="line"><span style="color: #F6F6F4">	</span><span style="color: #62E884">&quot;heartbeatIntervalMillis&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">NumberLong</span><span style="color: #F6F6F4">(</span><span style="color: #62E884">2000</span><span style="color: #F6F6F4">)</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">	</span><span style="color: #62E884">&quot;majorityVoteCount&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">2</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">	</span><span style="color: #62E884">&quot;writeMajorityCount&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">2</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">	</span><span style="color: #62E884">&quot;votingMembersCount&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">3</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">	</span><span style="color: #62E884">&quot;writableVotingMembersCount&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">3</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">	</span><span style="color: #62E884">&quot;optimes&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">{</span></span>
<span class="line"><span style="color: #F6F6F4">		</span><span style="color: #62E884">&quot;lastCommittedOpTime&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">{</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;ts&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">Timestamp</span><span style="color: #F6F6F4">(</span><span style="color: #62E884">1703577081,</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">1</span><span style="color: #F6F6F4">)</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;t&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">NumberLong</span><span style="color: #F6F6F4">(</span><span style="color: #62E884">6</span><span style="color: #F6F6F4">)</span></span>
<span class="line"><span style="color: #F6F6F4">		},</span></span>
<span class="line"><span style="color: #F6F6F4">		</span><span style="color: #62E884">&quot;lastCommittedWallTime&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">ISODate</span><span style="color: #F6F6F4">(</span><span style="color: #62E884">&quot;2023-12-26T07:51:21.974Z&quot;</span><span style="color: #F6F6F4">)</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">		</span><span style="color: #62E884">&quot;readConcernMajorityOpTime&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">{</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;ts&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">Timestamp</span><span style="color: #F6F6F4">(</span><span style="color: #62E884">1703577081,</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">1</span><span style="color: #F6F6F4">)</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;t&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">NumberLong</span><span style="color: #F6F6F4">(</span><span style="color: #62E884">6</span><span style="color: #F6F6F4">)</span></span>
<span class="line"><span style="color: #F6F6F4">		},</span></span>
<span class="line"><span style="color: #F6F6F4">		</span><span style="color: #62E884">&quot;appliedOpTime&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">{</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;ts&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">Timestamp</span><span style="color: #F6F6F4">(</span><span style="color: #62E884">1703577081,</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">1</span><span style="color: #F6F6F4">)</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;t&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">NumberLong</span><span style="color: #F6F6F4">(</span><span style="color: #62E884">6</span><span style="color: #F6F6F4">)</span></span>
<span class="line"><span style="color: #F6F6F4">		},</span></span>
<span class="line"><span style="color: #F6F6F4">		</span><span style="color: #62E884">&quot;durableOpTime&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">{</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;ts&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">Timestamp</span><span style="color: #F6F6F4">(</span><span style="color: #62E884">1703577081,</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">1</span><span style="color: #F6F6F4">)</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;t&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">NumberLong</span><span style="color: #F6F6F4">(</span><span style="color: #62E884">6</span><span style="color: #F6F6F4">)</span></span>
<span class="line"><span style="color: #F6F6F4">		},</span></span>
<span class="line"><span style="color: #F6F6F4">		</span><span style="color: #62E884">&quot;lastAppliedWallTime&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">ISODate</span><span style="color: #F6F6F4">(</span><span style="color: #62E884">&quot;2023-12-26T07:51:21.974Z&quot;</span><span style="color: #F6F6F4">)</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">		</span><span style="color: #62E884">&quot;lastDurableWallTime&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">ISODate</span><span style="color: #F6F6F4">(</span><span style="color: #62E884">&quot;2023-12-26T07:51:21.974Z&quot;</span><span style="color: #F6F6F4">)</span></span>
<span class="line"><span style="color: #F6F6F4">	},</span></span>
<span class="line"><span style="color: #F6F6F4">	</span><span style="color: #62E884">&quot;lastStableRecoveryTimestamp&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">Timestamp</span><span style="color: #F6F6F4">(</span><span style="color: #62E884">1703577061,</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">1</span><span style="color: #F6F6F4">)</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">	</span><span style="color: #62E884">&quot;electionCandidateMetrics&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">{</span></span>
<span class="line"><span style="color: #F6F6F4">		</span><span style="color: #62E884">&quot;lastElectionReason&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">electionTimeout</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">		</span><span style="color: #62E884">&quot;lastElectionDate&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">ISODate</span><span style="color: #F6F6F4">(</span><span style="color: #62E884">&quot;2023-12-26T07:42:21.741Z&quot;</span><span style="color: #F6F6F4">)</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">		</span><span style="color: #62E884">&quot;electionTerm&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">NumberLong</span><span style="color: #F6F6F4">(</span><span style="color: #62E884">6</span><span style="color: #F6F6F4">)</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">		</span><span style="color: #62E884">&quot;lastCommittedOpTimeAtElection&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">{</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;ts&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">Timestamp</span><span style="color: #F6F6F4">(</span><span style="color: #62E884">0,</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">0</span><span style="color: #F6F6F4">)</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;t&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">NumberLong</span><span style="color: #F6F6F4">(</span><span style="color: #62E884">-1</span><span style="color: #F6F6F4">)</span></span>
<span class="line"><span style="color: #F6F6F4">		},</span></span>
<span class="line"><span style="color: #F6F6F4">		</span><span style="color: #62E884">&quot;lastSeenOpTimeAtElection&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">{</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;ts&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">Timestamp</span><span style="color: #F6F6F4">(</span><span style="color: #62E884">1703576189,</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">1</span><span style="color: #F6F6F4">)</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;t&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">NumberLong</span><span style="color: #F6F6F4">(</span><span style="color: #62E884">5</span><span style="color: #F6F6F4">)</span></span>
<span class="line"><span style="color: #F6F6F4">		},</span></span>
<span class="line"><span style="color: #F6F6F4">		</span><span style="color: #62E884">&quot;numVotesNeeded&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">2</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">		</span><span style="color: #62E884">&quot;priorityAtElection&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">1</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">		</span><span style="color: #62E884">&quot;electionTimeoutMillis&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">NumberLong</span><span style="color: #F6F6F4">(</span><span style="color: #62E884">10000</span><span style="color: #F6F6F4">)</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">		</span><span style="color: #62E884">&quot;numCatchUpOps&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">NumberLong</span><span style="color: #F6F6F4">(</span><span style="color: #62E884">0</span><span style="color: #F6F6F4">)</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">		</span><span style="color: #62E884">&quot;newTermStartDate&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">ISODate</span><span style="color: #F6F6F4">(</span><span style="color: #62E884">&quot;2023-12-26T07:42:21.788Z&quot;</span><span style="color: #F6F6F4">)</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">		</span><span style="color: #62E884">&quot;wMajorityWriteAvailabilityDate&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">ISODate</span><span style="color: #F6F6F4">(</span><span style="color: #62E884">&quot;2023-12-26T07:42:22.347Z&quot;</span><span style="color: #F6F6F4">)</span></span>
<span class="line"><span style="color: #F6F6F4">	},</span></span>
<span class="line"><span style="color: #F6F6F4">	</span><span style="color: #62E884">&quot;members&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> [</span></span>
<span class="line"><span style="color: #F6F6F4">		{</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;_id&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">2</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;name&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">localhost:27017</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;health&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">1</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;state&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">1</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;stateStr&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">PRIMARY</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;uptime&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">553</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;optime&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">{</span></span>
<span class="line"><span style="color: #F6F6F4">				</span><span style="color: #62E884">&quot;ts&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">Timestamp</span><span style="color: #F6F6F4">(</span><span style="color: #62E884">1703577081,</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">1</span><span style="color: #F6F6F4">)</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">				</span><span style="color: #62E884">&quot;t&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">NumberLong</span><span style="color: #F6F6F4">(</span><span style="color: #62E884">6</span><span style="color: #F6F6F4">)</span></span>
<span class="line"><span style="color: #F6F6F4">			},</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;optimeDate&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">ISODate</span><span style="color: #F6F6F4">(</span><span style="color: #62E884">&quot;2023-12-26T07:51:21Z&quot;</span><span style="color: #F6F6F4">)</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;lastAppliedWallTime&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">ISODate</span><span style="color: #F6F6F4">(</span><span style="color: #62E884">&quot;2023-12-26T07:51:21.974Z&quot;</span><span style="color: #F6F6F4">)</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;lastDurableWallTime&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">ISODate</span><span style="color: #F6F6F4">(</span><span style="color: #62E884">&quot;2023-12-26T07:51:21.974Z&quot;</span><span style="color: #F6F6F4">)</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;syncSourceHost&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;&quot;</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;syncSourceId&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">-1,</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;infoMessage&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;&quot;</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;electionTime&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">Timestamp</span><span style="color: #F6F6F4">(</span><span style="color: #62E884">1703576541,</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">1</span><span style="color: #F6F6F4">)</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;electionDate&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">ISODate</span><span style="color: #F6F6F4">(</span><span style="color: #62E884">&quot;2023-12-26T07:42:21Z&quot;</span><span style="color: #F6F6F4">)</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;configVersion&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">17</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;configTerm&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">6</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;self&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">true</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;lastHeartbeatMessage&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;&quot;</span></span>
<span class="line"><span style="color: #F6F6F4">		},</span></span>
<span class="line"><span style="color: #F6F6F4">		{</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;_id&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">3</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;name&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">localhost:27018</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;health&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">1</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;state&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">2</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;stateStr&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">SECONDARY</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;uptime&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">88</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;optime&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">{</span></span>
<span class="line"><span style="color: #F6F6F4">				</span><span style="color: #62E884">&quot;ts&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">Timestamp</span><span style="color: #F6F6F4">(</span><span style="color: #62E884">1703577071,</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">1</span><span style="color: #F6F6F4">)</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">				</span><span style="color: #62E884">&quot;t&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">NumberLong</span><span style="color: #F6F6F4">(</span><span style="color: #62E884">6</span><span style="color: #F6F6F4">)</span></span>
<span class="line"><span style="color: #F6F6F4">			},</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;optimeDurable&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">{</span></span>
<span class="line"><span style="color: #F6F6F4">				</span><span style="color: #62E884">&quot;ts&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">Timestamp</span><span style="color: #F6F6F4">(</span><span style="color: #62E884">1703577071,</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">1</span><span style="color: #F6F6F4">)</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">				</span><span style="color: #62E884">&quot;t&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">NumberLong</span><span style="color: #F6F6F4">(</span><span style="color: #62E884">6</span><span style="color: #F6F6F4">)</span></span>
<span class="line"><span style="color: #F6F6F4">			},</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;optimeDate&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">ISODate</span><span style="color: #F6F6F4">(</span><span style="color: #62E884">&quot;2023-12-26T07:51:11Z&quot;</span><span style="color: #F6F6F4">)</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;optimeDurableDate&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">ISODate</span><span style="color: #F6F6F4">(</span><span style="color: #62E884">&quot;2023-12-26T07:51:11Z&quot;</span><span style="color: #F6F6F4">)</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;lastAppliedWallTime&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">ISODate</span><span style="color: #F6F6F4">(</span><span style="color: #62E884">&quot;2023-12-26T07:51:21.974Z&quot;</span><span style="color: #F6F6F4">)</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;lastDurableWallTime&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">ISODate</span><span style="color: #F6F6F4">(</span><span style="color: #62E884">&quot;2023-12-26T07:51:21.974Z&quot;</span><span style="color: #F6F6F4">)</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;lastHeartbeat&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">ISODate</span><span style="color: #F6F6F4">(</span><span style="color: #62E884">&quot;2023-12-26T07:51:20.928Z&quot;</span><span style="color: #F6F6F4">)</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;lastHeartbeatRecv&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">ISODate</span><span style="color: #F6F6F4">(</span><span style="color: #62E884">&quot;2023-12-26T07:51:20.928Z&quot;</span><span style="color: #F6F6F4">)</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;pingMs&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">NumberLong</span><span style="color: #F6F6F4">(</span><span style="color: #62E884">0</span><span style="color: #F6F6F4">)</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;lastHeartbeatMessage&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;&quot;</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;syncSourceHost&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">localhost:27017</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;syncSourceId&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">2</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;infoMessage&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;&quot;</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;configVersion&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">17</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;configTerm&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">6</span></span>
<span class="line"><span style="color: #F6F6F4">		},</span></span>
<span class="line"><span style="color: #F6F6F4">		{</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;_id&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">4</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;name&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">localhost:27019</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;health&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">1</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;state&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">2</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;stateStr&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">SECONDARY</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;uptime&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">65</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;optime&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">{</span></span>
<span class="line"><span style="color: #F6F6F4">				</span><span style="color: #62E884">&quot;ts&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">Timestamp</span><span style="color: #F6F6F4">(</span><span style="color: #62E884">1703577071,</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">1</span><span style="color: #F6F6F4">)</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">				</span><span style="color: #62E884">&quot;t&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">NumberLong</span><span style="color: #F6F6F4">(</span><span style="color: #62E884">6</span><span style="color: #F6F6F4">)</span></span>
<span class="line"><span style="color: #F6F6F4">			},</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;optimeDurable&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">{</span></span>
<span class="line"><span style="color: #F6F6F4">				</span><span style="color: #62E884">&quot;ts&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">Timestamp</span><span style="color: #F6F6F4">(</span><span style="color: #62E884">1703577071,</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">1</span><span style="color: #F6F6F4">)</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">				</span><span style="color: #62E884">&quot;t&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">NumberLong</span><span style="color: #F6F6F4">(</span><span style="color: #62E884">6</span><span style="color: #F6F6F4">)</span></span>
<span class="line"><span style="color: #F6F6F4">			},</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;optimeDate&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">ISODate</span><span style="color: #F6F6F4">(</span><span style="color: #62E884">&quot;2023-12-26T07:51:11Z&quot;</span><span style="color: #F6F6F4">)</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;optimeDurableDate&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">ISODate</span><span style="color: #F6F6F4">(</span><span style="color: #62E884">&quot;2023-12-26T07:51:11Z&quot;</span><span style="color: #F6F6F4">)</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;lastAppliedWallTime&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">ISODate</span><span style="color: #F6F6F4">(</span><span style="color: #62E884">&quot;2023-12-26T07:51:21.974Z&quot;</span><span style="color: #F6F6F4">)</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;lastDurableWallTime&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">ISODate</span><span style="color: #F6F6F4">(</span><span style="color: #62E884">&quot;2023-12-26T07:51:21.974Z&quot;</span><span style="color: #F6F6F4">)</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;lastHeartbeat&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">ISODate</span><span style="color: #F6F6F4">(</span><span style="color: #62E884">&quot;2023-12-26T07:51:20.929Z&quot;</span><span style="color: #F6F6F4">)</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;lastHeartbeatRecv&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">ISODate</span><span style="color: #F6F6F4">(</span><span style="color: #62E884">&quot;2023-12-26T07:51:20.981Z&quot;</span><span style="color: #F6F6F4">)</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;pingMs&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">NumberLong</span><span style="color: #F6F6F4">(</span><span style="color: #62E884">0</span><span style="color: #F6F6F4">)</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;lastHeartbeatMessage&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;&quot;</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;syncSourceHost&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">localhost:27018</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;syncSourceId&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">3</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;infoMessage&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;&quot;</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;configVersion&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">17</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;configTerm&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">6</span></span>
<span class="line"><span style="color: #F6F6F4">		}</span></span>
<span class="line"><span style="color: #F6F6F4">	],</span></span>
<span class="line"><span style="color: #F6F6F4">	</span><span style="color: #62E884">&quot;ok&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">1</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">	</span><span style="color: #62E884">&quot;</span><span style="color: #BF9EEE">$clusterTime</span><span style="color: #62E884">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">{</span></span>
<span class="line"><span style="color: #F6F6F4">		</span><span style="color: #62E884">&quot;clusterTime&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">Timestamp</span><span style="color: #F6F6F4">(</span><span style="color: #62E884">1703577081,</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">1</span><span style="color: #F6F6F4">)</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">		</span><span style="color: #62E884">&quot;signature&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">{</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;hash&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">BinData</span><span style="color: #F6F6F4">(</span><span style="color: #62E884">0,</span><span style="color: #62E884">&quot;AAAAAAAAAAAAAAAAAAAAAAAAAAA=&quot;</span><span style="color: #F6F6F4">)</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;keyId&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">NumberLong</span><span style="color: #F6F6F4">(</span><span style="color: #62E884">0</span><span style="color: #F6F6F4">)</span></span>
<span class="line"><span style="color: #F6F6F4">		}</span></span>
<span class="line"><span style="color: #F6F6F4">	},</span></span>
<span class="line"><span style="color: #F6F6F4">	</span><span style="color: #62E884">&quot;operationTime&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">Timestamp</span><span style="color: #F6F6F4">(</span><span style="color: #62E884">1703577081,</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">1</span><span style="color: #F6F6F4">)</span></span>
<span class="line"><span style="color: #F6F6F4">}</span></span></code></pre></div>



<h2 id="ket-luan" class="wp-block-heading">Kết luận</h2>



<p>Replica Set trong MongoDB là một tính năng quan trọng giúp tăng cường khả năng chịu lỗi và khả năng mở rộng của hệ thống cơ sở dữ liệu. Bằng cách cấu hình và sử dụng đúng cách, chúng ta có thể đạt được sự ổn định và hiệu suất cao. Hãy tận dụng sức mạnh của Replica Set để xây dựng hệ thống MongoDB mạnh mẽ và linh hoạt.</p>



<p>Cảm ơn mọi người đã đọc.</p>
<p>The post <a href="https://blog.tomosia.com.vn/chuc-nang-replica-set-trong-mongodb-p2/">Chức năng replica set trong MongoDB (P2)</a> appeared first on <a href="https://blog.tomosia.com.vn">Tomoshare</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.tomosia.com.vn/chuc-nang-replica-set-trong-mongodb-p2/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
		<item>
		<title>Tối ưu hóa SEO với Sitemap</title>
		<link>https://blog.tomosia.com.vn/toi-uu-hoa-seo-voi-sitemap/</link>
					<comments>https://blog.tomosia.com.vn/toi-uu-hoa-seo-voi-sitemap/#comments</comments>
		
		<dc:creator><![CDATA[Le Van Ninh]]></dc:creator>
		<pubDate>Wed, 27 Dec 2023 04:31:22 +0000</pubDate>
				<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[sitemap]]></category>
		<category><![CDATA[seo]]></category>
		<guid isPermaLink="false">https://blog.tomosia.com.vn/?p=2898</guid>

					<description><![CDATA[<p>SEO (Search Engine Optimization) đóng vai trò quan trọng trong việc đưa trang web của bạn đến gần&#8230;</p>
<p>The post <a href="https://blog.tomosia.com.vn/toi-uu-hoa-seo-voi-sitemap/">Tối ưu hóa SEO với Sitemap</a> appeared first on <a href="https://blog.tomosia.com.vn">Tomoshare</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>SEO (Search Engine Optimization) đóng vai trò quan trọng trong việc đưa trang web của bạn đến gần người dùng và công cụ tìm kiếm. Một công cụ hữu ích trong chiến lược SEO của bạn là sitemap.</p>



<h2 id="muc-dich-cua-sitemap" class="wp-block-heading">Mục đích của Sitemap</h2>



<ol class="wp-block-list">
<li><strong>Hiệu suất Indexing và SEO</strong><br>Giúp công cụ tìm kiếm hiểu rõ cấu trúc và nội dung của trang web. Điều này giúp tối ưu hóa hiệu suất indexing, đặc biệt là khi trang web có nhiều nội dung hoặc cấu trúc phức tạp.</li>



<li><strong>Ưu tiên Indexing</strong><br>Thông qua các thông tin như <code>lastmod</code> (thời điểm sửa đổi gần nhất), <code>changefreq</code> (tần suất thay đổi), và <code>priority</code> (độ ưu tiên), sitemap giúp bạn quyết định trang nào quan trọng hơn và nên được cập nhật thường xuyên hơn.</li>



<li><strong>Hỗ trợ trải nghiệm người dùng</strong><br>Sitemap không chỉ hỗ trợ công cụ tìm kiếm mà còn cải thiện trải nghiệm người dùng bằng cách cung cấp các liên kết dẫn đến các trang quan trọng.</li>



<li><strong>Điều hướng Crawl</strong> <strong>bổ sung</strong><br>Đối với các trang web có cấu trúc phức tạp, sitemap giúp điều hướng crawl bổ sung, đặc biệt là đối với các trang được tạo ra bằng JavaScript.</li>
</ol>



<h2 id="su-dung-sitemap-trong-ror" class="wp-block-heading">Sử dụng Sitemap trong ROR</h2>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:8.4296875px;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">YAML</span><span role="button" tabindex="0" data-code="# Gemfile

gem 'sitemap_generator'" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #7B7F8B"># Gemfile</span></span>
<span class="line"></span>
<span class="line"><span style="color: #E7EE98">gem &#39;sitemap_generator&#39;</span></span></code></pre></div>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:16.859375px;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">Ruby</span><span role="button" tabindex="0" data-code="# config/sitemap.rb

require 'rubygems'
require 'sitemap_generator'

SitemapGenerator::Sitemap.default_host = 'https://yourdomain.com'
SitemapGenerator::Sitemap.create do
  add '/', changefreq: 'daily', priority: 1.0
  add '/page', changefreq: 'weekly', priority: 0.8
  # Thêm các trang khác và thông tin
end

# ping công cụ tìm kiếm google và bing để thông báo về sự thay đổi của sitemap
SitemapGenerator::Sitemap.ping_search_engines" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #7B7F8B"># config/sitemap.rb</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F286C4">require</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">rubygems</span><span style="color: #DEE492">&#39;</span></span>
<span class="line"><span style="color: #F286C4">require</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">sitemap_generator</span><span style="color: #DEE492">&#39;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #97E1F1; font-style: italic">SitemapGenerator</span><span style="color: #F286C4">::</span><span style="color: #97E1F1; font-style: italic">Sitemap</span><span style="color: #F6F6F4">.default_host </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">https://yourdomain.com</span><span style="color: #DEE492">&#39;</span></span>
<span class="line"><span style="color: #97E1F1; font-style: italic">SitemapGenerator</span><span style="color: #F286C4">::</span><span style="color: #97E1F1; font-style: italic">Sitemap</span><span style="color: #F6F6F4">.create </span><span style="color: #F286C4">do</span></span>
<span class="line"><span style="color: #F6F6F4">  add </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">/</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">, changefreq</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">daily</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">, priority</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">1.0</span></span>
<span class="line"><span style="color: #F6F6F4">  add </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">/page</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">, changefreq</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">weekly</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">, priority</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">0.8</span></span>
<span class="line"><span style="color: #F6F6F4">  </span><span style="color: #7B7F8B"># Thêm các trang khác và thông tin</span></span>
<span class="line"><span style="color: #F286C4">end</span></span>
<span class="line"></span>
<span class="line"><span style="color: #7B7F8B"># ping công cụ tìm kiếm google và bing để thông báo về sự thay đổi của sitemap</span></span>
<span class="line"><span style="color: #97E1F1; font-style: italic">SitemapGenerator</span><span style="color: #F286C4">::</span><span style="color: #97E1F1; font-style: italic">Sitemap</span><span style="color: #F6F6F4">.ping_search_engines</span></span></code></pre></div>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:8.4296875px;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">Zsh</span><span role="button" tabindex="0" data-code="# Tạo file sitemap.xml

rake sitemap:create #=&gt; public/sitemap.xml" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #7B7F8B"># Tạo file sitemap.xml</span></span>
<span class="line"></span>
<span class="line"><span style="color: #62E884">rake</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">sitemap:create</span><span style="color: #F6F6F4"> </span><span style="color: #7B7F8B">#=&gt; public/sitemap.xml</span></span></code></pre></div>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:8.4296875px;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">YAML</span><span role="button" tabindex="0" data-code="# public/robots.txt

Sitemap: https://yourdomain/sitemap.xml" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #7B7F8B"># public/robots.txt</span></span>
<span class="line"></span>
<span class="line"><span style="color: #97E1F1">Sitemap</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">https://yourdomain/sitemap.xml</span></span></code></pre></div>



<h2 id="luu-y-khi-tao-sitemap" class="wp-block-heading">Lưu ý khi tạo Sitemap</h2>



<ul class="wp-block-list">
<li>Phân chia công việc tạo sitemap thành các nhiệm vụ nhỏ để giảm gánh nặng hệ thống.</li>



<li>Xác định các tiêu chí để chỉ tạo sitemap cho những trang quan trọng nhất, giảm độ lớn của sitemap.</li>



<li>Tối ưu cơ sở dữ liệu để đảm bảo tìm kiếm và truy xuất dữ liệu một cách hiệu quả.</li>



<li>Theo dõi quá trình tạo sitemap và lưu lại log để giám sát và điều chỉnh khi cần thiết.</li>



<li>Nên tạo sitemap vào những thời điểm ít người truy cập nhất để giảm tác động đến hiệu suất hệ thống và người dùng.</li>
</ul>



<h2 id="ket-luan" class="wp-block-heading">Kết luận</h2>



<p>Sitemap là chìa khóa quan trọng cho chiến lược SEO và hiệu suất web. Bằng cách đặt độ ưu tiên và tuân thủ lưu ý quan trọng, sitemap không chỉ tối ưu hóa hiệu suất hệ thống mà còn định hình một chiến lược SEO thành công.</p>



<p>Cảm ơn bạn đã đọc.</p>
<p>The post <a href="https://blog.tomosia.com.vn/toi-uu-hoa-seo-voi-sitemap/">Tối ưu hóa SEO với Sitemap</a> appeared first on <a href="https://blog.tomosia.com.vn">Tomoshare</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.tomosia.com.vn/toi-uu-hoa-seo-voi-sitemap/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
		<item>
		<title>Giới thiệu MongoDB (P1)</title>
		<link>https://blog.tomosia.com.vn/gioi-thieu-mongodb-p1/</link>
					<comments>https://blog.tomosia.com.vn/gioi-thieu-mongodb-p1/#comments</comments>
		
		<dc:creator><![CDATA[Le Van Ninh]]></dc:creator>
		<pubDate>Wed, 29 Nov 2023 04:16:59 +0000</pubDate>
				<category><![CDATA[Chưa phân loại]]></category>
		<category><![CDATA[Nosql]]></category>
		<category><![CDATA[MongoDB]]></category>
		<guid isPermaLink="false">https://blog.tomosia.com.vn/?p=2088</guid>

					<description><![CDATA[<p>MongoDB là gì? MongoDB là một hệ quản trị cơ sở dữ liệu phi quan hệ (NoSQL) mã&#8230;</p>
<p>The post <a href="https://blog.tomosia.com.vn/gioi-thieu-mongodb-p1/">Giới thiệu MongoDB (P1)</a> appeared first on <a href="https://blog.tomosia.com.vn">Tomoshare</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h2 id="mongodb-la-gi" class="wp-block-heading">MongoDB là gì?</h2>



<p>MongoDB là một hệ quản trị cơ sở dữ liệu phi quan hệ (NoSQL) mã nguồn mở, được thiết kế để lưu trữ và truy xuất dữ liệu trong các tài liệu JSON có độ linh hoạt cao.</p>



<h2 id="cau-truc-du-lieu" class="wp-block-heading"><strong>Cấu trúc Dữ liệu:</strong></h2>



<p><strong>BSON (Binary JSON):</strong> MongoDB sử dụng định dạng BSON để lưu trữ dữ liệu. BSON tương tự như JSON nhưng hỗ trợ các kiểu dữ liệu như số nguyên, số thực, chuỗi, mảng, đối tượng, ngày giờ, và các kiểu dữ liệu khác.</p>



<h2 id="cai-dat" class="wp-block-heading">Cài đặt:</h2>



<p>MacOS</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:8.4296875px;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">Zsh</span><span role="button" tabindex="0" data-code="brew tap mongodb/brew
brew install mongodb-community
brew services start mongodb-community" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #62E884">brew</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">tap</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">mongodb/brew</span></span>
<span class="line"><span style="color: #62E884">brew</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">install</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">mongodb-community</span></span>
<span class="line"><span style="color: #62E884">brew</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">services</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">start</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">mongodb-community</span></span></code></pre></div>



<p>Install MongoDB Shell</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:8.4296875px;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">Zsh</span><span role="button" tabindex="0" data-code="/bin/bash -c &quot;$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)&quot;
brew tap mongodb/brew
brew install mongodb-community-shell" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #62E884">/bin/bash</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">-c</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">$(</span><span style="color: #62E884">curl</span><span style="color: #E7EE98"> </span><span style="color: #BF9EEE">-fsSL</span><span style="color: #E7EE98"> https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)</span><span style="color: #DEE492">&quot;</span></span>
<span class="line"><span style="color: #62E884">brew</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">tap</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">mongodb/brew</span></span>
<span class="line"><span style="color: #62E884">brew</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">install</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">mongodb-community-shell</span></span></code></pre></div>



<h2 id="cac-cau-lenh" class="wp-block-heading">Các câu lệnh</h2>



<p>Tạo phiên làm việc MongoDB Shell</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:8.4296875px;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">Zsh</span><span role="button" tabindex="0" data-code="$ mongo" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #62E884">$</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">mongo</span></span></code></pre></div>



<p>Hiển thị danh sách các database</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:8.4296875px;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">Zsh</span><span role="button" tabindex="0" data-code="&gt; show dbs
admin                      0.000GB
ai_analyze_idea            0.000GB
config                     0.000GB
local                      0.000GB" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #F286C4">&gt;</span><span style="color: #F6F6F4"> show dbs</span></span>
<span class="line"><span style="color: #62E884">admin</span><span style="color: #F6F6F4">                      </span><span style="color: #BF9EEE">0.000</span><span style="color: #E7EE98">GB</span></span>
<span class="line"><span style="color: #62E884">ai_analyze_idea</span><span style="color: #F6F6F4">            </span><span style="color: #BF9EEE">0.000</span><span style="color: #E7EE98">GB</span></span>
<span class="line"><span style="color: #62E884">config</span><span style="color: #F6F6F4">                     </span><span style="color: #BF9EEE">0.000</span><span style="color: #E7EE98">GB</span></span>
<span class="line"><span style="color: #F286C4">local</span><span style="color: #F6F6F4">                      </span><span style="color: #BF9EEE">0.000</span><span style="color: #E7EE98">GB</span></span></code></pre></div>



<p>Chọn database</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:8.4296875px;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">Zsh</span><span role="button" tabindex="0" data-code="use &lt;db name&gt;

# Ex:
&gt; use ai_analyze_idea
switched to db ai_analyze_idea" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #62E884">use</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">&lt;</span><span style="color: #E7EE98">db</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">nam</span><span style="color: #F6F6F4">e</span><span style="color: #F286C4">&gt;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #7B7F8B"># Ex:</span></span>
<span class="line"><span style="color: #F286C4">&gt;</span><span style="color: #F6F6F4"> use ai_analyze_idea</span></span>
<span class="line"><span style="color: #62E884">switched</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">to</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">db</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">ai_analyze_idea</span></span></code></pre></div>



<p>Tạo một collection trong database</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:8.4296875px;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">Zsh</span><span role="button" tabindex="0" data-code="db.createCollection(&quot;collection name&quot;)

# Ex:
&gt; db.createCollection(&quot;tests&quot;)
{ &quot;ok&quot; : 1 }" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #62E884">db.createCollection(</span><span style="color: #62E884">&quot;collection name&quot;</span><span style="color: #F6F6F4">)</span></span>
<span class="line"></span>
<span class="line"><span style="color: #7B7F8B"># Ex:</span></span>
<span class="line"><span style="color: #F286C4">&gt;</span><span style="color: #F6F6F4"> db.createCollection(</span><span style="color: #62E884">&quot;tests&quot;</span><span style="color: #F6F6F4">)</span></span>
<span class="line"><span style="color: #F6F6F4">{ </span><span style="color: #62E884">&quot;ok&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">1</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">}</span></span></code></pre></div>



<p>Thêm dữ liệu vào collection</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:16.859375px;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">Zsh</span><span role="button" tabindex="0" data-code="db.&lt;collection_name&gt;.insert({&lt;field1&gt;: value1, &lt;field2&gt;: value2, ...})
db.&lt;collection_name&gt;.insert([{&lt;field1&gt;: value1, &lt;field2&gt;: value2, ...}])

# Ex:
&gt; db.tests.insert({name: &quot;Ninh Lee&quot;, age: 24, city: &quot;Da Nang&quot;})
WriteResult({ &quot;nInserted&quot; : 1 })

&gt; db.tests.insert([{name: &quot;Ninh Lee 1&quot;, age: 24, city: &quot;Da Nang 1&quot;}, {name: &quot;Ninh Lee 2&quot;, age: 24, city: &quot;Da Nang 2&quot;}])
BulkWriteResult({
	&quot;writeErrors&quot; : [ ],
	&quot;writeConcernErrors&quot; : [ ],
	&quot;nInserted&quot; : 2,
	&quot;nUpserted&quot; : 0,
	&quot;nMatched&quot; : 0,
	&quot;nModified&quot; : 0,
	&quot;nRemoved&quot; : 0,
	&quot;upserted&quot; : [ ]
})" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #62E884">db.&lt;collection_name&gt;.insert(</span><span style="color: #F6F6F4">{&lt;field1&gt;</span><span style="color: #97E1F1">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">value1,</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">&lt;</span><span style="color: #E7EE98">field</span><span style="color: #F286C4">2&gt;</span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">value2,</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">...}</span><span style="color: #F6F6F4">)</span></span>
<span class="line"><span style="color: #62E884">db.&lt;collection_name&gt;.insert([</span><span style="color: #F6F6F4">{&lt;field1&gt;</span><span style="color: #97E1F1">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">value1,</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">&lt;</span><span style="color: #E7EE98">field</span><span style="color: #F286C4">2&gt;</span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">value2,</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">...}]</span><span style="color: #F6F6F4">)</span></span>
<span class="line"></span>
<span class="line"><span style="color: #7B7F8B"># Ex:</span></span>
<span class="line"><span style="color: #F286C4">&gt;</span><span style="color: #F6F6F4"> db.tests.insert({name: &quot;Ninh Lee&quot;, age: 24, city: &quot;Da Nang&quot;})</span></span>
<span class="line"><span style="color: #62E884">WriteResult(</span><span style="color: #F6F6F4">{ </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">nInserted</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">1</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">}</span><span style="color: #F6F6F4">)</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F286C4">&gt;</span><span style="color: #F6F6F4"> db.tests.insert([{name: </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">Ninh Lee 1</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4">, age: </span><span style="color: #BF9EEE">24</span><span style="color: #F6F6F4">, city: </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">Da Nang 1</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4">}, {name: </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">Ninh Lee 2</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4">, age: </span><span style="color: #BF9EEE">24</span><span style="color: #F6F6F4">, city: </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">Da Nang 2</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4">}])</span></span>
<span class="line"><span style="color: #62E884">BulkWriteResult(</span><span style="color: #F6F6F4">{</span></span>
<span class="line"><span style="color: #F6F6F4">	</span><span style="color: #62E884">&quot;writeErrors&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> [ </span><span style="color: #E7EE98">],</span></span>
<span class="line"><span style="color: #F6F6F4">	</span><span style="color: #62E884">&quot;writeConcernErrors&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> [ </span><span style="color: #E7EE98">],</span></span>
<span class="line"><span style="color: #F6F6F4">	</span><span style="color: #62E884">&quot;nInserted&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">2</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">	</span><span style="color: #62E884">&quot;nUpserted&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">0</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">	</span><span style="color: #62E884">&quot;nMatched&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">0</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">	</span><span style="color: #62E884">&quot;nModified&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">0</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">	</span><span style="color: #62E884">&quot;nRemoved&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">0</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">	</span><span style="color: #62E884">&quot;upserted&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> [ </span><span style="color: #E7EE98">]</span></span>
<span class="line"><span style="color: #F6F6F4">})</span></span></code></pre></div>



<p>Select all documents</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:8.4296875px;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">Zsh</span><span role="button" tabindex="0" data-code="db.&lt;collection_name&gt;.find()

# Ex:
&gt; db.tests.find()
{ &quot;_id&quot; : ObjectId(&quot;65660837f88bc6a455d60d6d&quot;), &quot;name&quot; : &quot;Ninh Lee&quot;, &quot;age&quot; : 24, &quot;city&quot; : &quot;Da Nang&quot; }
{ &quot;_id&quot; : ObjectId(&quot;65660864f88bc6a455d60d6e&quot;), &quot;name&quot; : &quot;Ninh Lee 1&quot;, &quot;age&quot; : 24, &quot;city&quot; : &quot;Da Nang 1&quot; }
{ &quot;_id&quot; : ObjectId(&quot;65660864f88bc6a455d60d6f&quot;), &quot;name&quot; : &quot;Ninh Lee 2&quot;, &quot;age&quot; : 24, &quot;city&quot; : &quot;Da Nang 2&quot; }
&gt; db.test.find().sort({name: -1})
{ &quot;_id&quot; : ObjectId(&quot;65660ccff88bc6a455d60d72&quot;), &quot;name&quot; : &quot;Ninh Lee 5&quot;, &quot;age&quot; : 26, &quot;city&quot; : &quot;Da Nang 1&quot; }
{ &quot;_id&quot; : ObjectId(&quot;65660ccff88bc6a455d60d73&quot;), &quot;name&quot; : &quot;Ninh Lee 4&quot;, &quot;age&quot; : 30, &quot;city&quot; : &quot;Da Nang 2&quot; }
{ &quot;_id&quot; : ObjectId(&quot;65660c9ef88bc6a455d60d71&quot;), &quot;name&quot; : &quot;Ninh Lee 3&quot;, &quot;age&quot; : 25, &quot;city&quot; : &quot;Da Nang 2&quot; }
{ &quot;_id&quot; : ObjectId(&quot;65660c9ef88bc6a455d60d70&quot;), &quot;name&quot; : &quot;Ninh Lee 2&quot;, &quot;age&quot; : 26, &quot;city&quot; : &quot;Da Nang 1&quot; }
{ &quot;_id&quot; : ObjectId(&quot;65660864f88bc6a455d60d6e&quot;), &quot;name&quot; : &quot;Ninh Lee 1&quot;, &quot;age&quot; : 24, &quot;city&quot; : &quot;Da Nang 1&quot; }
{ &quot;_id&quot; : ObjectId(&quot;65660837f88bc6a455d60d6d&quot;), &quot;name&quot; : &quot;Ninh Lee&quot;, &quot;age&quot; : 25, &quot;city&quot; : &quot;Da Nang&quot; }" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #62E884">db.&lt;collection_name&gt;.find</span><span style="color: #F6F6F4">()</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F6F6F4"># Ex:</span></span>
<span class="line"><span style="color: #F6F6F4">&gt; db.tests.find()</span></span>
<span class="line"><span style="color: #F6F6F4">{ </span><span style="color: #62E884">&quot;_id&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">ObjectId</span><span style="color: #F6F6F4">(</span><span style="color: #62E884">&quot;65660837f88bc6a455d60d6d&quot;</span><span style="color: #F6F6F4">)</span><span style="color: #E7EE98">,</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">name</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">Ninh Lee</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">,</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">age</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">24</span><span style="color: #E7EE98">,</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">city</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">Da Nang</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">}</span></span>
<span class="line"><span style="color: #F6F6F4">{ </span><span style="color: #62E884">&quot;_id&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">ObjectId</span><span style="color: #F6F6F4">(</span><span style="color: #62E884">&quot;65660864f88bc6a455d60d6e&quot;</span><span style="color: #F6F6F4">)</span><span style="color: #E7EE98">,</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">name</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">Ninh Lee 1</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">,</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">age</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">24</span><span style="color: #E7EE98">,</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">city</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">Da Nang 1</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">}</span></span>
<span class="line"><span style="color: #F6F6F4">{ </span><span style="color: #62E884">&quot;_id&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">ObjectId</span><span style="color: #F6F6F4">(</span><span style="color: #62E884">&quot;65660864f88bc6a455d60d6f&quot;</span><span style="color: #F6F6F4">)</span><span style="color: #E7EE98">,</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">name</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">Ninh Lee 2</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">,</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">age</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">24</span><span style="color: #E7EE98">,</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">city</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">Da Nang 2</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">}</span></span>
<span class="line"><span style="color: #F286C4">&gt;</span><span style="color: #F6F6F4"> </span><span style="color: #62E884">db.test.find</span><span style="color: #F6F6F4">().sort({name: -1})</span></span>
<span class="line"><span style="color: #F6F6F4">{ </span><span style="color: #62E884">&quot;_id&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">ObjectId</span><span style="color: #F6F6F4">(</span><span style="color: #62E884">&quot;65660ccff88bc6a455d60d72&quot;</span><span style="color: #F6F6F4">)</span><span style="color: #E7EE98">,</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">name</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">Ninh Lee 5</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">,</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">age</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">26</span><span style="color: #E7EE98">,</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">city</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">Da Nang 1</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">}</span></span>
<span class="line"><span style="color: #F6F6F4">{ </span><span style="color: #62E884">&quot;_id&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">ObjectId</span><span style="color: #F6F6F4">(</span><span style="color: #62E884">&quot;65660ccff88bc6a455d60d73&quot;</span><span style="color: #F6F6F4">)</span><span style="color: #E7EE98">,</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">name</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">Ninh Lee 4</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">,</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">age</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">30</span><span style="color: #E7EE98">,</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">city</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">Da Nang 2</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">}</span></span>
<span class="line"><span style="color: #F6F6F4">{ </span><span style="color: #62E884">&quot;_id&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">ObjectId</span><span style="color: #F6F6F4">(</span><span style="color: #62E884">&quot;65660c9ef88bc6a455d60d71&quot;</span><span style="color: #F6F6F4">)</span><span style="color: #E7EE98">,</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">name</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">Ninh Lee 3</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">,</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">age</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">25</span><span style="color: #E7EE98">,</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">city</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">Da Nang 2</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">}</span></span>
<span class="line"><span style="color: #F6F6F4">{ </span><span style="color: #62E884">&quot;_id&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">ObjectId</span><span style="color: #F6F6F4">(</span><span style="color: #62E884">&quot;65660c9ef88bc6a455d60d70&quot;</span><span style="color: #F6F6F4">)</span><span style="color: #E7EE98">,</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">name</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">Ninh Lee 2</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">,</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">age</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">26</span><span style="color: #E7EE98">,</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">city</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">Da Nang 1</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">}</span></span>
<span class="line"><span style="color: #F6F6F4">{ </span><span style="color: #62E884">&quot;_id&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">ObjectId</span><span style="color: #F6F6F4">(</span><span style="color: #62E884">&quot;65660864f88bc6a455d60d6e&quot;</span><span style="color: #F6F6F4">)</span><span style="color: #E7EE98">,</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">name</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">Ninh Lee 1</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">,</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">age</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">24</span><span style="color: #E7EE98">,</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">city</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">Da Nang 1</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">}</span></span>
<span class="line"><span style="color: #F6F6F4">{ </span><span style="color: #62E884">&quot;_id&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">ObjectId</span><span style="color: #F6F6F4">(</span><span style="color: #62E884">&quot;65660837f88bc6a455d60d6d&quot;</span><span style="color: #F6F6F4">)</span><span style="color: #E7EE98">,</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">name</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">Ninh Lee</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">,</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">age</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">25</span><span style="color: #E7EE98">,</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">city</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">Da Nang</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">}</span></span></code></pre></div>



<p>Cập nhật document</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:8.4296875px;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">Zsh</span><span role="button" tabindex="0" data-code="db.&lt;collection_name&gt;.update({&lt;query&gt;}, {&lt;update&gt;})

# Ex:
&gt; db.tests.update({name: &quot;Ninh Lee&quot;}, {$set: {age: 25}})
WriteResult({ &quot;nMatched&quot; : 1, &quot;nUpserted&quot; : 0, &quot;nModified&quot; : 1 })
&gt; db.tests.find()
{ &quot;_id&quot; : ObjectId(&quot;65660837f88bc6a455d60d6d&quot;), &quot;name&quot; : &quot;Ninh Lee&quot;, &quot;age&quot; : 25, &quot;city&quot; : &quot;Da Nang&quot; }
{ &quot;_id&quot; : ObjectId(&quot;65660864f88bc6a455d60d6e&quot;), &quot;name&quot; : &quot;Ninh Lee 1&quot;, &quot;age&quot; : 24, &quot;city&quot; : &quot;Da Nang 1&quot; }
{ &quot;_id&quot; : ObjectId(&quot;65660864f88bc6a455d60d6f&quot;), &quot;name&quot; : &quot;Ninh Lee 2&quot;, &quot;age&quot; : 24, &quot;city&quot; : &quot;Da Nang 2&quot; }" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #62E884">db.&lt;collection_name&gt;.update(</span><span style="color: #F6F6F4">{&lt;query&gt;}</span><span style="color: #62E884">,</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">{</span><span style="color: #F286C4">&lt;</span><span style="color: #E7EE98">updat</span><span style="color: #F6F6F4">e</span><span style="color: #F286C4">&gt;</span><span style="color: #E7EE98">}</span><span style="color: #F6F6F4">)</span></span>
<span class="line"></span>
<span class="line"><span style="color: #7B7F8B"># Ex:</span></span>
<span class="line"><span style="color: #F286C4">&gt;</span><span style="color: #F6F6F4"> db.tests.update({name: &quot;Ninh Lee&quot;}, {$set: {age: 25}})</span></span>
<span class="line"><span style="color: #62E884">WriteResult(</span><span style="color: #F6F6F4">{ </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">nMatched</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">1</span><span style="color: #E7EE98">,</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">nUpserted</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">0</span><span style="color: #E7EE98">,</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">nModified</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">1</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">}</span><span style="color: #F6F6F4">)</span></span>
<span class="line"><span style="color: #F286C4">&gt;</span><span style="color: #F6F6F4"> </span><span style="color: #62E884">db.tests.find</span><span style="color: #F6F6F4">()</span></span>
<span class="line"><span style="color: #F6F6F4">{ </span><span style="color: #62E884">&quot;_id&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">ObjectId</span><span style="color: #F6F6F4">(</span><span style="color: #62E884">&quot;65660837f88bc6a455d60d6d&quot;</span><span style="color: #F6F6F4">)</span><span style="color: #E7EE98">,</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">name</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">Ninh Lee</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">,</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">age</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">25</span><span style="color: #E7EE98">,</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">city</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">Da Nang</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">}</span></span>
<span class="line"><span style="color: #F6F6F4">{ </span><span style="color: #62E884">&quot;_id&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">ObjectId</span><span style="color: #F6F6F4">(</span><span style="color: #62E884">&quot;65660864f88bc6a455d60d6e&quot;</span><span style="color: #F6F6F4">)</span><span style="color: #E7EE98">,</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">name</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">Ninh Lee 1</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">,</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">age</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">24</span><span style="color: #E7EE98">,</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">city</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">Da Nang 1</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">}</span></span>
<span class="line"><span style="color: #F6F6F4">{ </span><span style="color: #62E884">&quot;_id&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">ObjectId</span><span style="color: #F6F6F4">(</span><span style="color: #62E884">&quot;65660864f88bc6a455d60d6f&quot;</span><span style="color: #F6F6F4">)</span><span style="color: #E7EE98">,</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">name</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">Ninh Lee 2</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">,</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">age</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">24</span><span style="color: #E7EE98">,</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">city</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">Da Nang 2</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">}</span></span></code></pre></div>



<p>Delete document</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:8.4296875px;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">Zsh</span><span role="button" tabindex="0" data-code="db.&lt;collection_name&gt;.remove({&lt;query&gt;})

# Ex:
&gt; db.tests.remove({name: 'Ninh Lee 2'})
WriteResult({ &quot;nRemoved&quot; : 1 })
&gt; db.tests.find()
{ &quot;_id&quot; : ObjectId(&quot;65660837f88bc6a455d60d6d&quot;), &quot;name&quot; : &quot;Ninh Lee&quot;, &quot;age&quot; : 25, &quot;city&quot; : &quot;Da Nang&quot; }
{ &quot;_id&quot; : ObjectId(&quot;65660864f88bc6a455d60d6e&quot;), &quot;name&quot; : &quot;Ninh Lee 1&quot;, &quot;age&quot; : 24, &quot;city&quot; : &quot;Da Nang 1&quot; }" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #62E884">db.&lt;collection_name&gt;.remove(</span><span style="color: #F6F6F4">{&lt;query&gt;})</span></span>
<span class="line"></span>
<span class="line"><span style="color: #7B7F8B"># Ex:</span></span>
<span class="line"><span style="color: #F286C4">&gt;</span><span style="color: #F6F6F4"> db.tests.remove({name: &#39;Ninh Lee 2&#39;})</span></span>
<span class="line"><span style="color: #62E884">WriteResult(</span><span style="color: #F6F6F4">{ </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">nRemoved</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">1</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">}</span><span style="color: #F6F6F4">)</span></span>
<span class="line"><span style="color: #F286C4">&gt;</span><span style="color: #F6F6F4"> </span><span style="color: #62E884">db.tests.find</span><span style="color: #F6F6F4">()</span></span>
<span class="line"><span style="color: #F6F6F4">{ </span><span style="color: #62E884">&quot;_id&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">ObjectId</span><span style="color: #F6F6F4">(</span><span style="color: #62E884">&quot;65660837f88bc6a455d60d6d&quot;</span><span style="color: #F6F6F4">)</span><span style="color: #E7EE98">,</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">name</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">Ninh Lee</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">,</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">age</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">25</span><span style="color: #E7EE98">,</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">city</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">Da Nang</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">}</span></span>
<span class="line"><span style="color: #F6F6F4">{ </span><span style="color: #62E884">&quot;_id&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">ObjectId</span><span style="color: #F6F6F4">(</span><span style="color: #62E884">&quot;65660864f88bc6a455d60d6e&quot;</span><span style="color: #F6F6F4">)</span><span style="color: #E7EE98">,</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">name</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">Ninh Lee 1</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">,</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">age</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">24</span><span style="color: #E7EE98">,</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">city</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">Da Nang 1</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">}</span></span></code></pre></div>



<p>Index</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:16.859375px;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">Zsh</span><span role="button" tabindex="0" data-code="# 1 sắp xếp tăng dần
# -1 sắp xếp giảm dần
db.&lt;collection_name&gt;.createIndex({ &lt;field&gt;: 1 })
db.&lt;collection_name&gt;.createIndex({ &lt;field1&gt;: 1, &lt;field2&gt;: -1 })

# Ex:
&gt; db.tests.createIndex({name: 1, age: -1})
{
	&quot;numIndexesBefore&quot; : 1,
	&quot;numIndexesAfter&quot; : 2,
	&quot;createdCollectionAutomatically&quot; : false,
	&quot;ok&quot; : 1
}" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #7B7F8B"># 1 sắp xếp tăng dần</span></span>
<span class="line"><span style="color: #7B7F8B"># -1 sắp xếp giảm dần</span></span>
<span class="line"><span style="color: #62E884">db.&lt;collection_name&gt;.createIndex(</span><span style="color: #F6F6F4">{ </span><span style="color: #F286C4">&lt;</span><span style="color: #E7EE98">fiel</span><span style="color: #F6F6F4">d</span><span style="color: #F286C4">&gt;</span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">1</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">}</span><span style="color: #F6F6F4">)</span></span>
<span class="line"><span style="color: #62E884">db.&lt;collection_name&gt;.createIndex(</span><span style="color: #F6F6F4">{ </span><span style="color: #F286C4">&lt;</span><span style="color: #E7EE98">field</span><span style="color: #F286C4">1&gt;</span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">1</span><span style="color: #E7EE98">,</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">&lt;</span><span style="color: #E7EE98">field</span><span style="color: #F286C4">2&gt;</span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">-1</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">}</span><span style="color: #F6F6F4">)</span></span>
<span class="line"></span>
<span class="line"><span style="color: #7B7F8B"># Ex:</span></span>
<span class="line"><span style="color: #F286C4">&gt;</span><span style="color: #F6F6F4"> db.tests.createIndex({name: 1, age: -1})</span></span>
<span class="line"><span style="color: #F6F6F4">{</span></span>
<span class="line"><span style="color: #F6F6F4">	</span><span style="color: #62E884">&quot;numIndexesBefore&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">1</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">	</span><span style="color: #62E884">&quot;numIndexesAfter&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">2</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">	</span><span style="color: #62E884">&quot;createdCollectionAutomatically&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">false</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">	</span><span style="color: #62E884">&quot;ok&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">1</span></span>
<span class="line"><span style="color: #F6F6F4">}</span></span></code></pre></div>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:16.859375px;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">Zsh</span><span role="button" tabindex="0" data-code="db.&lt;collection_name&gt;.getIndexes()

# Ex:
&gt; db.tests.getIndexes()
[
	{
		&quot;v&quot; : 2,
		&quot;key&quot; : {
			&quot;_id&quot; : 1
		},
		&quot;name&quot; : &quot;_id_&quot;
	},
	{
		&quot;v&quot; : 2,
		&quot;key&quot; : {
			&quot;name&quot; : 1,
			&quot;age&quot; : -1
		},
		&quot;name&quot; : &quot;name_1_age_-1&quot;
	}
]" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #62E884">db.&lt;collection_name&gt;.getIndexes</span><span style="color: #F6F6F4">()</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F6F6F4"># Ex:</span></span>
<span class="line"><span style="color: #F6F6F4">&gt; db.tests.getIndexes()</span></span>
<span class="line"><span style="color: #F6F6F4">[</span></span>
<span class="line"><span style="color: #F6F6F4">	{</span></span>
<span class="line"><span style="color: #F6F6F4">		</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">v</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #97E1F1">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">2</span><span style="color: #F6F6F4">,</span></span>
<span class="line"><span style="color: #F6F6F4">		</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">key</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #97E1F1">:</span><span style="color: #F6F6F4"> {</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">_id</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #97E1F1">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">1</span></span>
<span class="line"><span style="color: #F6F6F4">		},</span></span>
<span class="line"><span style="color: #F6F6F4">		</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">name</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #97E1F1">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">_id_</span><span style="color: #DEE492">&quot;</span></span>
<span class="line"><span style="color: #F6F6F4">	},</span></span>
<span class="line"><span style="color: #F6F6F4">	{</span></span>
<span class="line"><span style="color: #F6F6F4">		</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">v</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #97E1F1">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">2</span><span style="color: #F6F6F4">,</span></span>
<span class="line"><span style="color: #F6F6F4">		</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">key</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #97E1F1">:</span><span style="color: #F6F6F4"> {</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">name</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #97E1F1">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">1</span><span style="color: #F6F6F4">,</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">age</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #97E1F1">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">-1</span></span>
<span class="line"><span style="color: #F6F6F4">		},</span></span>
<span class="line"><span style="color: #F6F6F4">		</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">name</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #97E1F1">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">name_1_age_-1</span><span style="color: #DEE492">&quot;</span></span>
<span class="line"><span style="color: #F6F6F4">	}</span></span>
<span class="line"><span style="color: #F6F6F4">]</span></span></code></pre></div>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:8.4296875px;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">Zsh</span><span role="button" tabindex="0" data-code="db.&lt;collection_name&gt;.dropIndex(&quot;&lt;index_name&gt;&quot;)

# Ex:
&gt; db.tests.dropIndex(&quot;name_1_age_-1&quot;)
{ &quot;nIndexesWas&quot; : 2, &quot;ok&quot; : 1 }
&gt; db.tests.getIndexes()
[ { &quot;v&quot; : 2, &quot;key&quot; : { &quot;_id&quot; : 1 }, &quot;name&quot; : &quot;_id_&quot; } ]" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #62E884">db.&lt;collection_name&gt;.dropIndex(</span><span style="color: #62E884">&quot;&lt;index_name&gt;&quot;</span><span style="color: #F6F6F4">)</span></span>
<span class="line"></span>
<span class="line"><span style="color: #7B7F8B"># Ex:</span></span>
<span class="line"><span style="color: #F286C4">&gt;</span><span style="color: #F6F6F4"> db.tests.dropIndex(</span><span style="color: #62E884">&quot;name_1_age_-1&quot;</span><span style="color: #F6F6F4">)</span></span>
<span class="line"><span style="color: #F6F6F4">{ </span><span style="color: #62E884">&quot;nIndexesWas&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">2</span><span style="color: #E7EE98">,</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">ok</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">1</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">}</span></span>
<span class="line"><span style="color: #F286C4">&gt;</span><span style="color: #F6F6F4"> </span><span style="color: #62E884">db.tests.getIndexes</span><span style="color: #F6F6F4">()</span></span>
<span class="line"><span style="color: #F6F6F4">[ { </span><span style="color: #62E884">&quot;v&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">2</span><span style="color: #E7EE98">,</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">key</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">{</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">_id</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">1</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">},</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">name</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">_id_</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">}</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">]</span></span></code></pre></div>



<p>Explain query</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:16.859375px;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">Zsh</span><span role="button" tabindex="0" data-code="db.&lt;collection_name&gt;.explain().find({&lt;query&gt;})

# Ex:
&gt; db.tests.explain().find({ age: 25 }).sort({ name: 1 })
{
	&quot;explainVersion&quot; : &quot;1&quot;,
	&quot;queryPlanner&quot; : {
		&quot;namespace&quot; : &quot;ai_analyze_idea.tests&quot;,
		&quot;indexFilterSet&quot; : false,
		&quot;parsedQuery&quot; : {
			&quot;age&quot; : {
				&quot;$eq&quot; : 25
			}
		},
		&quot;queryHash&quot; : &quot;397F81F6&quot;,
		&quot;planCacheKey&quot; : &quot;EF61D479&quot;,
		&quot;maxIndexedOrSolutionsReached&quot; : false,
		&quot;maxIndexedAndSolutionsReached&quot; : false,
		&quot;maxScansToExplodeReached&quot; : false,
		&quot;winningPlan&quot; : {
			&quot;stage&quot; : &quot;FETCH&quot;,
			&quot;filter&quot; : {
				&quot;age&quot; : {
					&quot;$eq&quot; : 25
				}
			},
			&quot;inputStage&quot; : {
				&quot;stage&quot; : &quot;IXSCAN&quot;,
				&quot;keyPattern&quot; : {
					&quot;name&quot; : 1,
					&quot;age&quot; : -1
				},
				&quot;indexName&quot; : &quot;name_1_age_-1&quot;,
				&quot;isMultiKey&quot; : false,
				&quot;multiKeyPaths&quot; : {
					&quot;name&quot; : [ ],
					&quot;age&quot; : [ ]
				},
				&quot;isUnique&quot; : false,
				&quot;isSparse&quot; : false,
				&quot;isPartial&quot; : false,
				&quot;indexVersion&quot; : 2,
				&quot;direction&quot; : &quot;forward&quot;,
				&quot;indexBounds&quot; : {
					&quot;name&quot; : [
						&quot;[MinKey, MaxKey]&quot;
					],
					&quot;age&quot; : [
						&quot;[MaxKey, MinKey]&quot;
					]
				}
			}
		},
		&quot;rejectedPlans&quot; : [ ]
	},
	&quot;command&quot; : {
		&quot;find&quot; : &quot;tests&quot;,
		&quot;filter&quot; : {
			&quot;age&quot; : 25
		},
		&quot;sort&quot; : {
			&quot;name&quot; : 1
		},
		&quot;$db&quot; : &quot;ai_analyze_idea&quot;
	},
	&quot;serverInfo&quot; : {
		&quot;host&quot; : &quot;192.168.0.108&quot;,
		&quot;port&quot; : 27017,
		&quot;version&quot; : &quot;6.0.5&quot;,
		&quot;gitVersion&quot; : &quot;c9a99c120371d4d4c52cbb15dac34a36ce8d3b1d&quot;
	},
	&quot;serverParameters&quot; : {
		&quot;internalQueryFacetBufferSizeBytes&quot; : 104857600,
		&quot;internalQueryFacetMaxOutputDocSizeBytes&quot; : 104857600,
		&quot;internalLookupStageIntermediateDocumentMaxSizeBytes&quot; : 104857600,
		&quot;internalDocumentSourceGroupMaxMemoryBytes&quot; : 104857600,
		&quot;internalQueryMaxBlockingSortMemoryUsageBytes&quot; : 104857600,
		&quot;internalQueryProhibitBlockingMergeOnMongoS&quot; : 0,
		&quot;internalQueryMaxAddToSetBytes&quot; : 104857600,
		&quot;internalDocumentSourceSetWindowFieldsMaxMemoryBytes&quot; : 104857600
	},
	&quot;ok&quot; : 1
}" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #62E884">db.&lt;collection_name&gt;.explain</span><span style="color: #F6F6F4">().find({&lt;query&gt;})</span></span>
<span class="line"></span>
<span class="line"><span style="color: #7B7F8B"># Ex:</span></span>
<span class="line"><span style="color: #F286C4">&gt;</span><span style="color: #F6F6F4"> </span><span style="color: #62E884">db.tests.explain</span><span style="color: #F6F6F4">().find({ age: 25 }).sort({ name: 1 })</span></span>
<span class="line"><span style="color: #F6F6F4">{</span></span>
<span class="line"><span style="color: #F6F6F4">	</span><span style="color: #62E884">&quot;explainVersion&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">1</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">	</span><span style="color: #62E884">&quot;queryPlanner&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">{</span></span>
<span class="line"><span style="color: #F6F6F4">		</span><span style="color: #62E884">&quot;namespace&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">ai_analyze_idea.tests</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">		</span><span style="color: #62E884">&quot;indexFilterSet&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">false</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">		</span><span style="color: #62E884">&quot;parsedQuery&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">{</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;age&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">{</span></span>
<span class="line"><span style="color: #F6F6F4">				</span><span style="color: #62E884">&quot;</span><span style="color: #BF9EEE">$eq</span><span style="color: #62E884">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">25</span></span>
<span class="line"><span style="color: #F6F6F4">			}</span></span>
<span class="line"><span style="color: #F6F6F4">		},</span></span>
<span class="line"><span style="color: #F6F6F4">		</span><span style="color: #62E884">&quot;queryHash&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">397F81F6</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">		</span><span style="color: #62E884">&quot;planCacheKey&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">EF61D479</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">		</span><span style="color: #62E884">&quot;maxIndexedOrSolutionsReached&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">false</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">		</span><span style="color: #62E884">&quot;maxIndexedAndSolutionsReached&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">false</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">		</span><span style="color: #62E884">&quot;maxScansToExplodeReached&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">false</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">		</span><span style="color: #62E884">&quot;winningPlan&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">{</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;stage&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">FETCH</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;filter&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">{</span></span>
<span class="line"><span style="color: #F6F6F4">				</span><span style="color: #62E884">&quot;age&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">{</span></span>
<span class="line"><span style="color: #F6F6F4">					</span><span style="color: #62E884">&quot;</span><span style="color: #BF9EEE">$eq</span><span style="color: #62E884">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">25</span></span>
<span class="line"><span style="color: #F6F6F4">				}</span></span>
<span class="line"><span style="color: #F6F6F4">			},</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;inputStage&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">{</span></span>
<span class="line"><span style="color: #F6F6F4">				</span><span style="color: #62E884">&quot;stage&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">IXSCAN</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">				</span><span style="color: #62E884">&quot;keyPattern&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">{</span></span>
<span class="line"><span style="color: #F6F6F4">					</span><span style="color: #62E884">&quot;name&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">1</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">					</span><span style="color: #62E884">&quot;age&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">-1</span></span>
<span class="line"><span style="color: #F6F6F4">				},</span></span>
<span class="line"><span style="color: #F6F6F4">				</span><span style="color: #62E884">&quot;indexName&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">name_1_age_-1</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">				</span><span style="color: #62E884">&quot;isMultiKey&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">false</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">				</span><span style="color: #62E884">&quot;multiKeyPaths&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">{</span></span>
<span class="line"><span style="color: #F6F6F4">					</span><span style="color: #62E884">&quot;name&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> [ </span><span style="color: #E7EE98">],</span></span>
<span class="line"><span style="color: #F6F6F4">					</span><span style="color: #62E884">&quot;age&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> [ </span><span style="color: #E7EE98">]</span></span>
<span class="line"><span style="color: #F6F6F4">				},</span></span>
<span class="line"><span style="color: #F6F6F4">				</span><span style="color: #62E884">&quot;isUnique&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">false</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">				</span><span style="color: #62E884">&quot;isSparse&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">false</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">				</span><span style="color: #62E884">&quot;isPartial&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">false</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">				</span><span style="color: #62E884">&quot;indexVersion&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">2</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">				</span><span style="color: #62E884">&quot;direction&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">forward</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">				</span><span style="color: #62E884">&quot;indexBounds&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">{</span></span>
<span class="line"><span style="color: #F6F6F4">					</span><span style="color: #62E884">&quot;name&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> [</span></span>
<span class="line"><span style="color: #F6F6F4">						</span><span style="color: #62E884">&quot;[MinKey, MaxKey]&quot;</span></span>
<span class="line"><span style="color: #F6F6F4">					],</span></span>
<span class="line"><span style="color: #F6F6F4">					</span><span style="color: #62E884">&quot;age&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> [</span></span>
<span class="line"><span style="color: #F6F6F4">						</span><span style="color: #62E884">&quot;[MaxKey, MinKey]&quot;</span></span>
<span class="line"><span style="color: #F6F6F4">					]</span></span>
<span class="line"><span style="color: #F6F6F4">				}</span></span>
<span class="line"><span style="color: #F6F6F4">			}</span></span>
<span class="line"><span style="color: #F6F6F4">		},</span></span>
<span class="line"><span style="color: #F6F6F4">		</span><span style="color: #62E884">&quot;rejectedPlans&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> [ </span><span style="color: #E7EE98">]</span></span>
<span class="line"><span style="color: #F6F6F4">	},</span></span>
<span class="line"><span style="color: #F6F6F4">	</span><span style="color: #62E884">&quot;command&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">{</span></span>
<span class="line"><span style="color: #F6F6F4">		</span><span style="color: #62E884">&quot;find&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">tests</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">		</span><span style="color: #62E884">&quot;filter&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">{</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;age&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">25</span></span>
<span class="line"><span style="color: #F6F6F4">		},</span></span>
<span class="line"><span style="color: #F6F6F4">		</span><span style="color: #62E884">&quot;sort&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">{</span></span>
<span class="line"><span style="color: #F6F6F4">			</span><span style="color: #62E884">&quot;name&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">1</span></span>
<span class="line"><span style="color: #F6F6F4">		},</span></span>
<span class="line"><span style="color: #F6F6F4">		</span><span style="color: #62E884">&quot;</span><span style="color: #BF9EEE">$db</span><span style="color: #62E884">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">ai_analyze_idea</span><span style="color: #DEE492">&quot;</span></span>
<span class="line"><span style="color: #F6F6F4">	},</span></span>
<span class="line"><span style="color: #F6F6F4">	</span><span style="color: #62E884">&quot;serverInfo&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">{</span></span>
<span class="line"><span style="color: #F6F6F4">		</span><span style="color: #62E884">&quot;host&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">192.168.0.108</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">		</span><span style="color: #62E884">&quot;port&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">27017</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">		</span><span style="color: #62E884">&quot;version&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">6.0.5</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">		</span><span style="color: #62E884">&quot;gitVersion&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">c9a99c120371d4d4c52cbb15dac34a36ce8d3b1d</span><span style="color: #DEE492">&quot;</span></span>
<span class="line"><span style="color: #F6F6F4">	},</span></span>
<span class="line"><span style="color: #F6F6F4">	</span><span style="color: #62E884">&quot;serverParameters&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">{</span></span>
<span class="line"><span style="color: #F6F6F4">		</span><span style="color: #62E884">&quot;internalQueryFacetBufferSizeBytes&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">104857600</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">		</span><span style="color: #62E884">&quot;internalQueryFacetMaxOutputDocSizeBytes&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">104857600</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">		</span><span style="color: #62E884">&quot;internalLookupStageIntermediateDocumentMaxSizeBytes&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">104857600</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">		</span><span style="color: #62E884">&quot;internalDocumentSourceGroupMaxMemoryBytes&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">104857600</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">		</span><span style="color: #62E884">&quot;internalQueryMaxBlockingSortMemoryUsageBytes&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">104857600</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">		</span><span style="color: #62E884">&quot;internalQueryProhibitBlockingMergeOnMongoS&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">0</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">		</span><span style="color: #62E884">&quot;internalQueryMaxAddToSetBytes&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">104857600</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">		</span><span style="color: #62E884">&quot;internalDocumentSourceSetWindowFieldsMaxMemoryBytes&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">104857600</span></span>
<span class="line"><span style="color: #F6F6F4">	},</span></span>
<span class="line"><span style="color: #F6F6F4">	</span><span style="color: #62E884">&quot;ok&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">1</span></span>
<span class="line"><span style="color: #F6F6F4">}</span></span></code></pre></div>



<h2 id="ket-luan" class="wp-block-heading">Kết luận</h2>



<p>Trên đây là một cái nhìn tổng quan về MongoDB, một hệ quản trị cơ sở dữ liệu NoSQL mạnh mẽ và linh hoạt. Tích hợp BSON, khả năng mở rộng và index hiệu quả là những điểm mạnh giúp MongoDB trở thành lựa chọn hàng đầu cho nhiều ứng dụng hiện đại.</p>



<p>Trong phần tiếp theo, chúng ta sẽ đi sâu vào các khía cạnh quan trọng khác của MongoDB, bao gồm Aggregation Framework, quản lý bảo mật, và tối ưu hóa hiệu suất,&#8230;</p>



<p></p>



<p></p>



<p></p>



<p></p>



<p></p>



<p></p>



<p></p>



<p></p>



<p></p>



<p></p>



<p></p>



<p></p>



<p></p>



<p></p>



<p></p>



<p></p>



<p></p>



<p></p>
<p>The post <a href="https://blog.tomosia.com.vn/gioi-thieu-mongodb-p1/">Giới thiệu MongoDB (P1)</a> appeared first on <a href="https://blog.tomosia.com.vn">Tomoshare</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.tomosia.com.vn/gioi-thieu-mongodb-p1/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
		<item>
		<title>Localstack, giả lập môi trường AWS.</title>
		<link>https://blog.tomosia.com.vn/localstack-gia-lap-moi-truong-aws/</link>
					<comments>https://blog.tomosia.com.vn/localstack-gia-lap-moi-truong-aws/#comments</comments>
		
		<dc:creator><![CDATA[Le Van Ninh]]></dc:creator>
		<pubDate>Wed, 15 Nov 2023 09:42:02 +0000</pubDate>
				<category><![CDATA[AWS]]></category>
		<category><![CDATA[Aws]]></category>
		<guid isPermaLink="false">https://blog.tomosia.com.vn/?p=1846</guid>

					<description><![CDATA[<p>Mục đích sử dụng: Localstack mô phỏng lại môi trường AWS trên máy local. Nó giúp phát triển&#8230;</p>
<p>The post <a href="https://blog.tomosia.com.vn/localstack-gia-lap-moi-truong-aws/">Localstack, giả lập môi trường AWS.</a> appeared first on <a href="https://blog.tomosia.com.vn">Tomoshare</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h2 id="muc-dich-su-dung" class="wp-block-heading">Mục đích sử dụng:</h2>



<div class="wp-block-group"><div class="wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained">
<div class="wp-block-group"><div class="wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained">
<p><code>Localstack</code> mô phỏng lại môi trường AWS trên máy local.</p>



<p>Nó giúp phát triển và kiểm thử các giải pháp như microservices hoặc functions và sử dụng các dịch vụ có trong AWS.</p>



<p>Các dịch vụ AWS trên Localstack:</p>



<pre class="wp-block-verse">API Gateway,
Kinesis, 
DynamoDB, 
DynamoDB Streams, 
Elasticsearch, 
S3, 
Firehose, 
Lambda, 
SNS, 
SQS, 
Redshift, 
ES (Elasticsearch Service), 
SES, 
Route53, 
CloudFormation, 
CloudWatch, 
SSM, 
SecretsManager</pre>
</div></div>



<h2 id="cai-dat-va-su-dung" class="wp-block-heading">Cài đặt và sử dụng:</h2>



<p>Cài đặt localstack:</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:16.859375px;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">YAML</span><span role="button" tabindex="0" data-code="# docker-compose.yml

version: &quot;3.2&quot;
services:
  localstack:
    image: localstack/localstack:latest
    container_name: localstack_demo
    ports:
      # - &quot;127.0.0.1:4566:4566&quot; # LocalStack Gateway
      - &quot;127.0.0.1:4510-4559:4510-4559&quot; # external services port range
      - &quot;0.0.0.0:4566:4566&quot;
    environment:
      - SERVICES=s3
      - DEBUG=1
      - DATA_DIR=/tmp/localstack/data
    volumes:
      - &quot;./.localstack:/var/lib/localstack&quot;
      - &quot;/var/run/docker.sock:/var/run/docker.sock&quot;" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #7B7F8B"># docker-compose.yml</span></span>
<span class="line"></span>
<span class="line"><span style="color: #97E1F1">version</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">3.2</span><span style="color: #DEE492">&quot;</span></span>
<span class="line"><span style="color: #97E1F1">services</span><span style="color: #F286C4">:</span></span>
<span class="line"><span style="color: #F6F6F4">  </span><span style="color: #97E1F1">localstack</span><span style="color: #F286C4">:</span></span>
<span class="line"><span style="color: #F6F6F4">    </span><span style="color: #97E1F1">image</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">localstack/localstack:latest</span></span>
<span class="line"><span style="color: #F6F6F4">    </span><span style="color: #97E1F1">container_name</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">localstack_demo</span></span>
<span class="line"><span style="color: #F6F6F4">    </span><span style="color: #97E1F1">ports</span><span style="color: #F286C4">:</span></span>
<span class="line"><span style="color: #F6F6F4">      </span><span style="color: #7B7F8B"># - &quot;127.0.0.1:4566:4566&quot; # LocalStack Gateway</span></span>
<span class="line"><span style="color: #F6F6F4">      </span><span style="color: #F286C4">-</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">127.0.0.1:4510-4559:4510-4559</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #7B7F8B"># external services port range</span></span>
<span class="line"><span style="color: #F6F6F4">      </span><span style="color: #F286C4">-</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">0.0.0.0:4566:4566</span><span style="color: #DEE492">&quot;</span></span>
<span class="line"><span style="color: #F6F6F4">    </span><span style="color: #97E1F1">environment</span><span style="color: #F286C4">:</span></span>
<span class="line"><span style="color: #F6F6F4">      </span><span style="color: #F286C4">-</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">SERVICES=s3</span></span>
<span class="line"><span style="color: #F6F6F4">      </span><span style="color: #F286C4">-</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">DEBUG=1</span></span>
<span class="line"><span style="color: #F6F6F4">      </span><span style="color: #F286C4">-</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">DATA_DIR=/tmp/localstack/data</span></span>
<span class="line"><span style="color: #F6F6F4">    </span><span style="color: #97E1F1">volumes</span><span style="color: #F286C4">:</span></span>
<span class="line"><span style="color: #F6F6F4">      </span><span style="color: #F286C4">-</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">./.localstack:/var/lib/localstack</span><span style="color: #DEE492">&quot;</span></span>
<span class="line"><span style="color: #F6F6F4">      </span><span style="color: #F286C4">-</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">/var/run/docker.sock:/var/run/docker.sock</span><span style="color: #DEE492">&quot;</span></span></code></pre></div>



<p>Start localstack:</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:8.4375px;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">Zsh</span><span role="button" tabindex="0" data-code="docker-compose up -d" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #62E884">docker-compose</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">up</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">-d</span></span></code></pre></div>



<p>Tạo profile cho Localstack:</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:8.4375px;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">Zsh</span><span role="button" tabindex="0" data-code="aws configure --profile localstack
 
AWS Access Key ID [****************demo]: dummy
AWS Secret Access Key [****************demo]: dummy
Default region name [ap-northeast-1]: ap-northeast-1
Default output format [json]: json" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #62E884">aws</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">configure</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">--profile</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">localstack</span></span>
<span class="line"><span style="color: #F6F6F4"> </span></span>
<span class="line"><span style="color: #62E884">AWS</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">Access</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">Key</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">ID</span><span style="color: #F6F6F4"> [****************demo]: dummy</span></span>
<span class="line"><span style="color: #62E884">AWS</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">Secret</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">Access</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">Key</span><span style="color: #F6F6F4"> [****************demo]: dummy</span></span>
<span class="line"><span style="color: #62E884">Default</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">region</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">name</span><span style="color: #F6F6F4"> [ap-northeast-1]: ap-northeast-1</span></span>
<span class="line"><span style="color: #62E884">Default</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">output</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">format</span><span style="color: #F6F6F4"> [json]: json</span></span></code></pre></div>
</div></div>



<p>Or</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:8.4375px;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">Zsh</span><span role="button" tabindex="0" data-code="vi ~/.aws/config" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #62E884">vi</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">~/.aws/config</span></span></code></pre></div>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:8.4375px;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">VimL</span><span role="button" tabindex="0" data-code="[profile localstack]
output = json
region = ap-northeast-1" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #F6F6F4">[profile localstack]</span></span>
<span class="line"><span style="color: #F6F6F4">output </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> json</span></span>
<span class="line"><span style="color: #F6F6F4">region </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> ap-northeast-</span><span style="color: #BF9EEE">1</span></span></code></pre></div>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:8.4375px;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">Zsh</span><span role="button" tabindex="0" data-code="vi ~/.aws/credentials" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #62E884">vi</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">~/.aws/credentials</span></span></code></pre></div>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:8.4375px;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">VimL</span><span role="button" tabindex="0" data-code="[localstack]
aws_access_key_id = dummy
aws_secret_access_key = dummy" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #F6F6F4">[localstack]</span></span>
<span class="line"><span style="color: #F6F6F4">aws_access_key_id </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> dummy</span></span>
<span class="line"><span style="color: #F6F6F4">aws_secret_access_key </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> dummy</span></span></code></pre></div>



<h4 id="tao-s3-trong-localstack" class="wp-block-heading">Tạo S3 trong Localstack:</h4>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:8.4375px;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">Zsh</span><span role="button" tabindex="0" data-code="aws --endpoint-url=http://localhost:4566 --profile localstack s3api create-bucket --bucket test-bucket --create-bucket-configuration LocationConstraint=ap-northeast-1

# Kết quả:
{
    &quot;Location&quot;: &quot;http://test-bucket.s3.localhost.localstack.cloud:4566/&quot;
}" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #62E884">aws</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">--endpoint-url=http://localhost:4566</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">--profile</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">localstack</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">s3api</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">create-bucket</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">--bucket</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">test-bucket</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">--create-bucket-configuration</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">LocationConstraint=ap-northeast-1</span></span>
<span class="line"></span>
<span class="line"><span style="color: #7B7F8B"># Kết quả:</span></span>
<span class="line"><span style="color: #F6F6F4">{</span></span>
<span class="line"><span style="color: #F6F6F4">    </span><span style="color: #62E884">&quot;Location&quot;</span><span style="color: #97E1F1">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">http://test-bucket.s3.localhost.localstack.cloud:4566/</span><span style="color: #DEE492">&quot;</span></span>
<span class="line"><span style="color: #F6F6F4">}</span></span></code></pre></div>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:8.4375px;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">Zsh</span><span role="button" tabindex="0" data-code="aws s3 ls --endpoint-url=http://localhost:4566 --profile localstack

# Kết quả:
2023-11-15 10:24:40 test-bucket" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #62E884">aws</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">s3</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">ls</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">--endpoint-url=http://localhost:4566</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">--profile</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">localstack</span></span>
<span class="line"></span>
<span class="line"><span style="color: #7B7F8B"># Kết quả:</span></span>
<span class="line"><span style="color: #62E884">2023-11-15</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">10</span><span style="color: #E7EE98">:24:40</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">test-bucket</span></span></code></pre></div>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:8.4375px;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">YAML</span><span role="button" tabindex="0" data-code="# .env

# Cả 2 endpoint đều hoạt động với Localstack ở local.
#S3_ENDPOINT='http://localhost:4566'
S3_ENDPOINT='http://test-bucket.s3.localhost.localstack.cloud:4566/'
S3_AWS_ACCESS_KEY_ID='dummy'
S3_AWS_SECRET_KEY='dummy'
S3_AWS_BUCKET_NAME='test-bucket'" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #7B7F8B"># .env</span></span>
<span class="line"></span>
<span class="line"><span style="color: #7B7F8B"># Cả 2 endpoint đều hoạt động với Localstack ở local.</span></span>
<span class="line"><span style="color: #7B7F8B">#S3_ENDPOINT=&#39;http://localhost:4566&#39;</span></span>
<span class="line"><span style="color: #E7EE98">S3_ENDPOINT=&#39;http://test-bucket.s3.localhost.localstack.cloud:4566/&#39;</span></span>
<span class="line"><span style="color: #E7EE98">S3_AWS_ACCESS_KEY_ID=&#39;dummy&#39;</span></span>
<span class="line"><span style="color: #E7EE98">S3_AWS_SECRET_KEY=&#39;dummy&#39;</span></span>
<span class="line"><span style="color: #E7EE98">S3_AWS_BUCKET_NAME=&#39;test-bucket&#39;</span></span></code></pre></div>



<h4 id="tao-dynamodb-trong-localstack" class="wp-block-heading">Tạo Dynamodb trong Localstack:</h4>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:16.859375px;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">YAML</span><span role="button" tabindex="0" data-code="version: &quot;3.2&quot;
services:
  localstack:
    image: localstack/localstack:latest
    container_name: localstack_demo
    ports:
      # - &quot;127.0.0.1:4566:4566&quot; # LocalStack Gateway
      - &quot;127.0.0.1:4510-4559:4510-4559&quot; # external services port range
      - &quot;0.0.0.0:4566:4566&quot;
    environment:
      - SERVICES=dynamodb
      - DEBUG=1
      - DATA_DIR=/tmp/localstack/data
    volumes:
      - &quot;./.localstack:/var/lib/localstack&quot;
      - &quot;/var/run/docker.sock:/var/run/docker.sock&quot;" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #97E1F1">version</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">3.2</span><span style="color: #DEE492">&quot;</span></span>
<span class="line"><span style="color: #97E1F1">services</span><span style="color: #F286C4">:</span></span>
<span class="line"><span style="color: #F6F6F4">  </span><span style="color: #97E1F1">localstack</span><span style="color: #F286C4">:</span></span>
<span class="line"><span style="color: #F6F6F4">    </span><span style="color: #97E1F1">image</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">localstack/localstack:latest</span></span>
<span class="line"><span style="color: #F6F6F4">    </span><span style="color: #97E1F1">container_name</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">localstack_demo</span></span>
<span class="line"><span style="color: #F6F6F4">    </span><span style="color: #97E1F1">ports</span><span style="color: #F286C4">:</span></span>
<span class="line"><span style="color: #F6F6F4">      </span><span style="color: #7B7F8B"># - &quot;127.0.0.1:4566:4566&quot; # LocalStack Gateway</span></span>
<span class="line"><span style="color: #F6F6F4">      </span><span style="color: #F286C4">-</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">127.0.0.1:4510-4559:4510-4559</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #7B7F8B"># external services port range</span></span>
<span class="line"><span style="color: #F6F6F4">      </span><span style="color: #F286C4">-</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">0.0.0.0:4566:4566</span><span style="color: #DEE492">&quot;</span></span>
<span class="line"><span style="color: #F6F6F4">    </span><span style="color: #97E1F1">environment</span><span style="color: #F286C4">:</span></span>
<span class="line"><span style="color: #F6F6F4">      </span><span style="color: #F286C4">-</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">SERVICES=dynamodb</span></span>
<span class="line"><span style="color: #F6F6F4">      </span><span style="color: #F286C4">-</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">DEBUG=1</span></span>
<span class="line"><span style="color: #F6F6F4">      </span><span style="color: #F286C4">-</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">DATA_DIR=/tmp/localstack/data</span></span>
<span class="line"><span style="color: #F6F6F4">    </span><span style="color: #97E1F1">volumes</span><span style="color: #F286C4">:</span></span>
<span class="line"><span style="color: #F6F6F4">      </span><span style="color: #F286C4">-</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">./.localstack:/var/lib/localstack</span><span style="color: #DEE492">&quot;</span></span>
<span class="line"><span style="color: #F6F6F4">      </span><span style="color: #F286C4">-</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">/var/run/docker.sock:/var/run/docker.sock</span><span style="color: #DEE492">&quot;</span></span></code></pre></div>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:16.859375px;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">Zsh</span><span role="button" tabindex="0" data-code="aws dynamodb create-table \
    --table-name test \
    --key-schema AttributeName=id,KeyType=HASH \
    --attribute-definitions AttributeName=id,AttributeType=S \
    --billing-mode PAY_PER_REQUEST \
    --region ap-northeast-1 \
    --endpoint-url=http://localhost:4566 \
    --profile localstack

# Kết quả:
{
    &quot;TableDescription&quot;: {
        &quot;AttributeDefinitions&quot;: [
            {
                &quot;AttributeName&quot;: &quot;id&quot;,
                &quot;AttributeType&quot;: &quot;S&quot;
            }
        ],
        &quot;TableName&quot;: &quot;test&quot;,
        &quot;KeySchema&quot;: [
            {
                &quot;AttributeName&quot;: &quot;id&quot;,
                &quot;KeyType&quot;: &quot;HASH&quot;
            }
        ],
        &quot;TableStatus&quot;: &quot;ACTIVE&quot;,
        &quot;CreationDateTime&quot;: &quot;2023-11-15T11:29:05.597000+07:00&quot;,
        &quot;ProvisionedThroughput&quot;: {
            &quot;LastIncreaseDateTime&quot;: &quot;1970-01-01T07:00:00+07:00&quot;,
            &quot;LastDecreaseDateTime&quot;: &quot;1970-01-01T07:00:00+07:00&quot;,
            &quot;NumberOfDecreasesToday&quot;: 0,
            &quot;ReadCapacityUnits&quot;: 0,
            &quot;WriteCapacityUnits&quot;: 0
        },
        &quot;TableSizeBytes&quot;: 0,
        &quot;ItemCount&quot;: 0,
        &quot;TableArn&quot;: &quot;arn:aws:dynamodb:ap-northeast-1:000000000000:table/test&quot;,
        &quot;TableId&quot;: &quot;fb25d41f-0563-4be9-8b21-75bc3b7006b9&quot;,
        &quot;BillingModeSummary&quot;: {
            &quot;BillingMode&quot;: &quot;PAY_PER_REQUEST&quot;,
            &quot;LastUpdateToPayPerRequestDateTime&quot;: &quot;2023-11-15T11:29:05.597000+07:00&quot;
        }
    }
}" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #62E884">aws</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">dynamodb</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">create-table</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">\</span></span>
<span class="line"><span style="color: #F6F6F4">    </span><span style="color: #BF9EEE">--table-name</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">test</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">\</span></span>
<span class="line"><span style="color: #F6F6F4">    </span><span style="color: #BF9EEE">--key-schema</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">AttributeName=id,KeyType=HASH</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">\</span></span>
<span class="line"><span style="color: #F6F6F4">    </span><span style="color: #BF9EEE">--attribute-definitions</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">AttributeName=id,AttributeType=S</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">\</span></span>
<span class="line"><span style="color: #F6F6F4">    </span><span style="color: #BF9EEE">--billing-mode</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">PAY_PER_REQUEST</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">\</span></span>
<span class="line"><span style="color: #F6F6F4">    </span><span style="color: #BF9EEE">--region</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">ap-northeast-1</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">\</span></span>
<span class="line"><span style="color: #F6F6F4">    </span><span style="color: #BF9EEE">--endpoint-url=http://localhost:4566</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">\</span></span>
<span class="line"><span style="color: #F6F6F4">    </span><span style="color: #BF9EEE">--profile</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">localstack</span></span>
<span class="line"></span>
<span class="line"><span style="color: #7B7F8B"># Kết quả:</span></span>
<span class="line"><span style="color: #F6F6F4">{</span></span>
<span class="line"><span style="color: #F6F6F4">    </span><span style="color: #62E884">&quot;TableDescription&quot;</span><span style="color: #97E1F1">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">{</span></span>
<span class="line"><span style="color: #F6F6F4">        </span><span style="color: #62E884">&quot;AttributeDefinitions&quot;</span><span style="color: #97E1F1">:</span><span style="color: #F6F6F4"> [</span></span>
<span class="line"><span style="color: #F6F6F4">            {</span></span>
<span class="line"><span style="color: #F6F6F4">                </span><span style="color: #62E884">&quot;AttributeName&quot;</span><span style="color: #97E1F1">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">id</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">                </span><span style="color: #62E884">&quot;AttributeType&quot;</span><span style="color: #97E1F1">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">S</span><span style="color: #DEE492">&quot;</span></span>
<span class="line"><span style="color: #F6F6F4">            }</span></span>
<span class="line"><span style="color: #F6F6F4">        ],</span></span>
<span class="line"><span style="color: #F6F6F4">        </span><span style="color: #62E884">&quot;TableName&quot;</span><span style="color: #97E1F1">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">test</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">        </span><span style="color: #62E884">&quot;KeySchema&quot;</span><span style="color: #97E1F1">:</span><span style="color: #F6F6F4"> [</span></span>
<span class="line"><span style="color: #F6F6F4">            {</span></span>
<span class="line"><span style="color: #F6F6F4">                </span><span style="color: #62E884">&quot;AttributeName&quot;</span><span style="color: #97E1F1">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">id</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">                </span><span style="color: #62E884">&quot;KeyType&quot;</span><span style="color: #97E1F1">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">HASH</span><span style="color: #DEE492">&quot;</span></span>
<span class="line"><span style="color: #F6F6F4">            }</span></span>
<span class="line"><span style="color: #F6F6F4">        ],</span></span>
<span class="line"><span style="color: #F6F6F4">        </span><span style="color: #62E884">&quot;TableStatus&quot;</span><span style="color: #97E1F1">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">ACTIVE</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">        </span><span style="color: #62E884">&quot;CreationDateTime&quot;</span><span style="color: #97E1F1">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">2023-11-15T11:29:05.597000+07:00</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">        </span><span style="color: #62E884">&quot;ProvisionedThroughput&quot;</span><span style="color: #97E1F1">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">{</span></span>
<span class="line"><span style="color: #F6F6F4">            </span><span style="color: #62E884">&quot;LastIncreaseDateTime&quot;</span><span style="color: #97E1F1">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">1970-01-01T07:00:00+07:00</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">            </span><span style="color: #62E884">&quot;LastDecreaseDateTime&quot;</span><span style="color: #97E1F1">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">1970-01-01T07:00:00+07:00</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">            </span><span style="color: #62E884">&quot;NumberOfDecreasesToday&quot;</span><span style="color: #97E1F1">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">0</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">            </span><span style="color: #62E884">&quot;ReadCapacityUnits&quot;</span><span style="color: #97E1F1">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">0</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">            </span><span style="color: #62E884">&quot;WriteCapacityUnits&quot;</span><span style="color: #97E1F1">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">0</span></span>
<span class="line"><span style="color: #F6F6F4">        },</span></span>
<span class="line"><span style="color: #F6F6F4">        </span><span style="color: #62E884">&quot;TableSizeBytes&quot;</span><span style="color: #97E1F1">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">0</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">        </span><span style="color: #62E884">&quot;ItemCount&quot;</span><span style="color: #97E1F1">:</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">0</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">        </span><span style="color: #62E884">&quot;TableArn&quot;</span><span style="color: #97E1F1">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">arn:aws:dynamodb:ap-northeast-1:000000000000:table/test</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">        </span><span style="color: #62E884">&quot;TableId&quot;</span><span style="color: #97E1F1">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">fb25d41f-0563-4be9-8b21-75bc3b7006b9</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">        </span><span style="color: #62E884">&quot;BillingModeSummary&quot;</span><span style="color: #97E1F1">:</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">{</span></span>
<span class="line"><span style="color: #F6F6F4">            </span><span style="color: #62E884">&quot;BillingMode&quot;</span><span style="color: #97E1F1">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">PAY_PER_REQUEST</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">,</span></span>
<span class="line"><span style="color: #F6F6F4">            </span><span style="color: #62E884">&quot;LastUpdateToPayPerRequestDateTime&quot;</span><span style="color: #97E1F1">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">2023-11-15T11:29:05.597000+07:00</span><span style="color: #DEE492">&quot;</span></span>
<span class="line"><span style="color: #F6F6F4">        }</span></span>
<span class="line"><span style="color: #F6F6F4">    }</span></span>
<span class="line"><span style="color: #F6F6F4">}</span></span></code></pre></div>



<pre class="wp-block-verse">Bạn muốn sử dụng dịch vụ nào của AWS thì thêm dịch vụ đấy vào SERVICES trong file docker-compose.yml.</pre>



<p>Tài liệu tham khảo: <a href="https://docs.localstack.cloud/">https://docs.localstack.cloud/</a></p>
<p>The post <a href="https://blog.tomosia.com.vn/localstack-gia-lap-moi-truong-aws/">Localstack, giả lập môi trường AWS.</a> appeared first on <a href="https://blog.tomosia.com.vn">Tomoshare</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.tomosia.com.vn/localstack-gia-lap-moi-truong-aws/feed/</wfw:commentRss>
			<slash:comments>8</slash:comments>
		
		
			</item>
		<item>
		<title>Giải quyết N+1 trong rails</title>
		<link>https://blog.tomosia.com.vn/giai-quyet-n1-trong-rails/</link>
					<comments>https://blog.tomosia.com.vn/giai-quyet-n1-trong-rails/#comments</comments>
		
		<dc:creator><![CDATA[Le Van Ninh]]></dc:creator>
		<pubDate>Wed, 25 Oct 2023 04:32:30 +0000</pubDate>
				<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Sql]]></category>
		<category><![CDATA[Rails]]></category>
		<guid isPermaLink="false">https://blog.tomosia.com.vn/?p=1480</guid>

					<description><![CDATA[<p>N+1 là gì? N+1 query là một vấn đề hiệu suất phổ biến trong các ứng dụng Ruby&#8230;</p>
<p>The post <a href="https://blog.tomosia.com.vn/giai-quyet-n1-trong-rails/">Giải quyết N+1 trong rails</a> appeared first on <a href="https://blog.tomosia.com.vn">Tomoshare</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h2 id="n1-la-gi" class="wp-block-heading">N+1 là gì?</h2>



<p>N+1 query là một vấn đề hiệu suất phổ biến trong các ứng dụng Ruby on Rails. Nó xảy ra khi bạn truy vấn một bảng để lấy dữ liệu, sau đó truy vấn bảng khác để lấy dữ liệu bổ sung cho mỗi đối tượng trong bảng đầu tiên.</p>



<p>Ví dụ: Bạn có bảng <mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-vivid-red-color">posts</mark> và bảng <mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-vivid-red-color">comments</mark></p>



<pre class="wp-block-code has-f-8-f-8-f-2-color has-text-color has-875-rem-font-size"><code>class Post &lt; ActiveRecord::Base 
  has_many :comments
end

class Comment &lt; ActiveRecord::Base
  belongs_to :post
end</code></pre>



<p>Bạn muốn lấy danh sách tất cả các bài đăng cùng với danh sách tất cả các bình luận của chúng, bạn có thể viết mã như sau:</p>



<pre class="wp-block-code"><code>@posts = Post.limit(5) 
@posts.each do |post| 
  @post.comments
end
# Total: 6 query 
# 1 query cho post 
# 5 query cho mỗi lần each</code></pre>



<p>Đoạn code này sẽ tạo ra hai truy vấn SQL: <br>Một truy vấn để lấy tất cả các bài đăng, và một truy vấn cho mỗi bài đăng để lấy tất cả các bình luận của nó. Điều này có thể dẫn đến hiệu suất kém, đặc biệt nếu bạn có nhiều bài đăng hoặc bình luận.</p>



<h2 id="cach-giai-quyet-n1" class="wp-block-heading">Cách giải quyết N+1</h2>



<p><strong>1. Sử dụng <mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-vivid-red-color">includes</mark> hoặc <mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-vivid-red-color">eager_load</mark></strong></p>



<p>Phương thức includes hoặc eager_load cho phép bạn tải trước dữ liệu từ relation khi bạn truy cập từ một bảng.</p>



<p>Ví dụ:</p>



<pre class="wp-block-code"><code>@posts = Post.includes(:comments) # Total: 1 query
@posts = Post.eager_load(:comments) # Total: 1 query</code></pre>



<p><strong>2. Sử dụng <mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-vivid-red-color">preload</mark></strong></p>



<p><mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-vivid-red-color">preload</mark> là một phương pháp giúp giảm thiểu vấn đề n+1 query trong Rails. Khi bạn sử dụng preload, Rails sẽ thực hiện hai truy vấn riêng biệt: một truy vấn để lấy tất cả các dữ liệu cần thiết và một truy vấn để lấy dữ liệu liên quan. Sau đó, Rails sẽ kết hợp dữ liệu từ hai truy vấn này mà không cần thực hiện thêm bất kỳ truy vấn nào nữa, giảm thiểu số lần truy vấn đến cơ sở dữ liệu.</p>



<p>Ví dụ:</p>



<pre class="wp-block-code"><code>@posts = Post.preload(:comments)
@posts = Post.preload(:comments).where(published: true)

@posts = Post.all
ActiveRecord::Associations::Preloader.new.preload(@posts, :comments)</code></pre>



<p><strong>3. Sử dụng <mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-vivid-red-color">joins</mark></strong></p>



<p>Sử dụng joins để kết hợp các bảng và truy vấn dữ liệu cùng một lúc. Điều này giúp tránh việc thực hiện nhiều truy vấn riêng lẻ.</p>



<p>Ví dụ:</p>



<pre class="wp-block-code"><code>@posts = Post.joins(:comments).select('posts.*, comments.body') # rails 6
@posts = Post.joins(:comments)
             .select(posts: {}, comments: &#91;:body]) # rails 7</code></pre>



<p><strong>4. Sử dụng <mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-vivid-red-color">pluck</mark> hoặc <mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-vivid-red-color">select</mark></strong></p>



<p>Thay vì lấy toàn bộ đối tượng, sử dụng pluck hoặc select để chỉ lấy những cột dữ liệu cần thiết.</p>



<p>Ví dụ:</p>



<pre class="wp-block-code"><code># Sử dụng pluck
@post_ids = Post.where(created_at: 1.week.ago..).pluck(:id)
@comments = Post.joins(:comments)
                .where(created_at: 1.week.ago..)
		.pluck('comments.id', 'comments.body')

# Sử dụng select
@comments = Comment.select(:id, :body).where(id: @post_ids)
@posts = Post.joins(:comments).select('posts.*, comments.body') # rails 6
@posts = Post.joins(:comments)
             .select(posts: {}, comments: &#91;:body]) # rails 7</code></pre>



<p><strong>5. Sử dụng <mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-vivid-red-color">scope</mark></strong></p>



<p>Khi bạn muốn sử dụng preload với một phạm vi (scope) trong Rails, bạn có thể kết hợp preload với phạm vi đó để tối ưu hóa truy vấn dữ liệu của mình.</p>



<p>Ví dụ:</p>



<pre class="wp-block-code"><code>class Post &lt; ActiveRecord::Base 
  has_many :comments

  scope :published, -&gt; { where(published: true) }
end

@posts = Post.eager_load(:comments).published
@posts = Post.published.preload(:comments)

@posts_pushlished = Post.published
ActiveRecord::Associations::Preloader.new.preload(
  @posts_pushlished,
  :comments
)

@posts = Post.published.includes(:comments)
@posts = Post.published.joins(:comments)</code></pre>



<h2 id="ket-luan" class="wp-block-heading">Kết luận</h2>



<p>Bằng cách sử dụng các phương pháp như <mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-vivid-red-color">includes</mark>, <mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-vivid-red-color">eager_load</mark>, <mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-vivid-red-color">preload</mark>, <mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-vivid-red-color">joins</mark>, <mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-vivid-red-color">pluck</mark>, và <mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-vivid-red-color">select</mark>, bạn có thể giải quyết vấn đề N+1 query trong Rails một cách hiệu quả. Điều này không chỉ cải thiện hiệu suất ứng dụng của bạn mà còn giúp tối ưu hóa truy vấn cơ sở dữ liệu và tăng tốc độ tải trang.</p>



<h5 id="" class="wp-block-heading"><br></h5>
<p>The post <a href="https://blog.tomosia.com.vn/giai-quyet-n1-trong-rails/">Giải quyết N+1 trong rails</a> appeared first on <a href="https://blog.tomosia.com.vn">Tomoshare</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.tomosia.com.vn/giai-quyet-n1-trong-rails/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
	</channel>
</rss>
