当前位置:网站首页 > 技术博客 > 正文

python获取某文档的路径



本教程旨在介绍如何使用 MongoDBPyMongo .

在我们开始之前,确保你有 PyMongo 分布 . 在Python shell中,应在不引发异常的情况下运行以下命令:

本教程还假设MongoDB实例运行在默认主机和端口上。假设你有 MongoDB,您可以这样启动:

使用时的第一步 PyMongo 是为了创造一个 为了跑步 蒙古德 实例。这样做很容易:

上面的代码将连接到默认主机和端口。我们也可以显式指定主机和端口,如下所示:

或者使用MongoDB URI格式:

MongoDB的单个实例可以支持多个独立的 。使用PyMongo时,您可以使用上的属性样式访问数据库 实例:

如果您的数据库名不能使用属性样式访问(比如 ),您可以改用字典式访问:

A 是存储在MongoDB中的一组文档,可以被认为大致相当于关系数据库中的一个表。在PyMongo中获取集合的工作原理与获取数据库的工作原理相同:

或(使用字典式访问):

关于MongoDB中集合(和数据库)的一个重要注意事项是,它们是延迟创建的——上面的命令都没有在MongoDB服务器上实际执行任何操作。在向集合和数据库中插入第一个文档时,将创建这些集合和数据库。

MongoDB中的数据使用JSON样式的文档表示(并存储)。在PyMongo中,我们使用字典来表示文档。例如,可以使用以下字典来表示博客文章:

请注意,文档可以包含原生Python类型(如 实例),它们将自动转换为相应的 类型。

要将文档插入到集合中,我们可以使用 方法:

当文档被插入特殊密钥时, ,则在文档尚未包含 钥匙。的价值 在集合中必须是唯一的。 返回 。有关以下内容的更多信息 ,请参阅 。

插入第一个文档后 帖子 集合实际上已在服务器上创建。我们可以通过列出数据库中的所有集合来验证这一点:

在MongoDB中可以执行的最基本的查询类型是 . 此方法返回与查询(或 如果没有匹配项)。当您知道只有一个匹配的文档,或者只对第一个匹配的文档感兴趣时,它非常有用。在这里我们使用 要从posts集合获取第一个文档,请执行以下操作:

结果是一个与我们先前插入的字典相匹配的字典。

还支持查询结果文档必须匹配的特定元素。为了将结果限制在作者为“Mike”的文档中,我们需要:

如果我们试着用另一个作者,比如“艾略特”,我们不会得到任何结果:

我们也可以通过它找到一个帖子 ,在我们的示例中是一个ObjectId:

请注意,ObjectId与其字符串表示形式不同:

web应用程序中的一个常见任务是从请求URL获取ObjectId并找到匹配的文档。在这种情况下 从字符串转换ObjectId 在传递给 ::

为了使查询更加有趣,让我们再插入一些文档。除了插入单个文档,我们还可以执行 大容量插入 操作,方法是将列表作为第一个参数传递给 . 这将插入列表中的每个文档,只向服务器发送一个命令:

关于这个例子,有几个有趣的事情需要注意:

要获取作为查询结果的多个文档,我们使用 方法。 返回A 实例,它允许我们迭代所有匹配的文档。例如,我们可以迭代 收藏:

就像我们做的那样 ,我们可以将文档传递给 限制返回的结果。这里,我们只得到那些作者是“Mike”的文档:

如果我们只想知道有多少文档与一个查询匹配,我们可以执行 操作而不是完整查询。我们可以获得集合中所有文档的计数:

或者只匹配特定查询的文档:

MongoDB支持多种不同类型的 。例如,让我们执行一个查询,其中我们将结果限制为某个日期之前的帖子,但也按作者对结果进行排序:

这里我们用的是 运算符执行范围查询,同时调用 按作者对结果进行排序。

添加索引有助于加速某些查询,还可以为查询和存储文档添加附加功能。在此示例中,我们将演示如何创建 在拒绝其值已存在于索引中的文档的键上。

首先,我们需要创建索引:

注意,我们现在有两个索引:一个是 MongoDB自动创建,另一个是 我们刚刚创造了。

现在让我们设置一些用户配置文件:

索引阻止我们插入 已在集合中:

版权声明


相关文章:

  • 用扩散模型时,转化率为多少2025-01-15 21:01:05
  • java并发编程实战和并发编程的艺术2025-01-15 21:01:05
  • 什么叫json数据的封装2025-01-15 21:01:05
  • linux ntpdate命令不存在2025-01-15 21:01:05
  • windows无法安装usb驱动2025-01-15 21:01:05
  • sql语句编写技巧2025-01-15 21:01:05
  • 在线编程菜鸟2025-01-15 21:01:05
  • 软件版本编号规则2025-01-15 21:01:05
  • HashMap和Hashtable的区别2025-01-15 21:01:05
  • 结构体指针如何定义2025-01-15 21:01:05