Zend MongoDB实现

时间:2012-12-10 17:22:58

标签: mongodb zend-framework2

我正在尝试将Zend与MongoDB集成。我想我差不多了,但我需要一些帮助才能完成任务。我是zend和mongo的新手,但对PHP和MySQL有相当的经验。

一些细节:

我的Zend项目基于http://framework.zend.com/manual/2.0/en/user-guide/skeleton-application.html的骨架教程。这在我的计算机上工作正常,但是基于mysql。

我安装了MongoDB。我可以在命令行上编写nosql,我可以在PHP脚本中实例化一个MongoClient对象,所以这些东西似乎可以互相通信。

我想使用mongo而不是mysql,我已经实现了Doctrine。我不知道Doctrine做了什么,我经历了几次搜索,试图找到如何在zend中运行mongo命令。这些事实让我得出结论,我不知道自己在做什么。

所以关于我的问题的具体细节:

  • 据我了解,我应该在某处实例化一个mongo对象。如果是这样,我应该在哪里将实例化放在zend中?
  • 如果没有,大概我需要一个mongo对象的现有实例来从模型类中运行各种查找/保存命令,所以如果这是真的,我该如何访问现有的mongo对象?

感谢您的帮助,同样欢迎澄清问题。

编辑于2012年12月13日进行澄清。

根据给定的答案,我似乎走在正确的轨道上,我可以进一步澄清我的需要: 查看下面链接的Doctrine Documentation,我仍然不清楚文档管理器实例化的位置。我原以为它会进入一个更通用的位置,该位置在每个页面加载时运行。另外,我发现的大多数教程似乎都是指骨架应用程序给出的不同文件结构,所以当他们说某些东西放在某些地方时,我不确定它们的意思。例如,我一直看到对引导程序文件的引用,但我唯一的引导文件位于测试目录中。

我的问题是这些:

  • 我需要在indexAction函数中添加什么代码(当我转到正确的URL时肯定会响应)如果我只想print_r集合中的所有文档?
  • 我是否需要在其他地方添加任何其他代码,如果是,在哪里以及代码是什么?

2 个答案:

答案 0 :(得分:0)

mongoDB访问有很棒的模块doctrine-mongo-odm-module。 只需添加到composer.json

即可
"require": {   
....
"doctrine/doctrine-mongo-odm-module": "dev-master",
....

Doctrine documentation应该有助于如何使用它。

答案 1 :(得分:0)

这些是不同的部分和它们的作用,从下往上工作:

mongodb :数据持久性

doctrineODM :对象文档映射器。这将mongo文档映射到php对象。这意味着您不必担心直接对mongo进行任何调用 - 您只需使用普通的旧php对象。要使用doctrineODM,您需要定义模型类,并使用DocumentManager - 建议,Doctrine文档非常好。

doctrineMongoODMModule :将doctrine与zf2集成的模块。它的主要功能是允许您使用zf2配置样式配置doctrine,并允许您通过zf2 ServiceManager访问DocumentManager。 (我还做了很多其他事情,但它们是主要的事情)

zf2(mvc):允许您定义界面,以便其他内容(如Web客户端)可以操作您的文档。