\chapter{基于数据库的通信}

\section{什么是MongoDB}
这是一个数据库框架，我们可以使用它来保存用户的数据，包括用户帐户，聊天记录。

为什么呢？因为它比大多数传统数据库（例如SQL）更简单。 而且它与JSON更兼容。

另外，该数据库的好处是您不必预先定义数据结构。 数据库一个集合中的每个元素都可以具有不同的数据结构。 这使您可以灵活快速地尽快制作软件产品原型。

\section{如何在Python中使用MongoDB}
\subsection{PyMongo}
“ PyMongo\cite{pymongo}”是操作MongoDB的python库。通过使用它，我们可以轻松地处理数据库。

\subsection{简单的例子}
\lstinputlisting[language=Python]{data/codes/6/1pymongo_example.py}

在此示例中，首先，我们定义了一个“posts”。 “posts”是一个集合，或者，如果您愿意，也可以将其视为列表。

然后我们定义了两个post，它们是dict对象。 我们将它们插入了“posts”集合。

然后，我们尝试通过使用其部分数据“author==Mike”来查找其中一个post。

然后，我们为该post添加了一个新属性。 该属性的值是一系列数字8。

最后，我们迭代“posts”集合以打印出该列表中的每个post。


\section{为什么我们要使用数据库}
为什么我们必须使用数据库？ 这是因为我们要永久保存用户的数据，包括用户帐户本身。 您不希望您的用户在服务器计算机断电后发现其帐户已消失。

我们可以将所有数据保存在计算机内存中，但是由于以下原因，这是不实际的：

\begin{enumerate}
    \item 一台计算机的内存是有限的。 我从未听说过计算机的内存大于计算机的磁盘空间。
    \item 当计算机关闭时，保存在计算机内存中的所有数据都将消失。 那不是好事。
    \item 你可以自己写一个脚本来处理数据，但很快你会发现你自己写的东西效率太低。
    \item 方便我们共享以及备份数据。

\end{enumerate}