使用 PHP 显示 MongoDB 集合结果


Displaying MongoDB collection result with PHP

我正在关注一本书:"PHP and MongoDB Web Development"

在这里,他们创建了一个 dbconnection.php 脚本:

<?php
class DBConnection
{
    const HOST   = 'localhost';
    const PORT   = 27017;
    const DBNAME = 'myblogsite';
    private static $instance;
    public $connection;    
    public $database;
    private function __construct()
    {
        $connectionString = sprintf('mongodb://%s:%d', DBConnection::HOST, DBConnection::PORT);
        try {
            $this->connection = new Mongo($connectionString);
            $this->database = $this->connection->selectDB(DBConnection::DBNAME);
        } catch (MongoConnectionException $e) {
            throw $e;
        }
    }
    static public function instantiate()
    {
        if (!isset(self::$instance)) {
            $class = __CLASS__;
            self::$instance = new $class;
        }
        return self::$instance;
    }
    public function getCollection($name)
    {
        return $this->database->selectCollection($name);
    }
}

我想使用此脚本通过名为 blogs 的文件列出博客文章.php:

<?php
require_once('dbconnection.php');
class Blogs
{
    const COLLECTION = 'articles';
    private $_mongo;
    private $_collection;
    private $_blogs;
    public function __construct()
    {
        $this->_mongo = DBConnection::instantiate();
        $this->_collection = $this->_mongo->getCollection(Blogs::COLLECTION);
    }

}
$blogs = new Blogs();

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <link rel="stylesheet" href="style.css" /> 
    <title>My Blog Site</title>
    </head>
          <body>
              <div id="contentarea">
                  <div id="innercontentarea">
                      <h1>My Blogs</h1>
                      <?php while ($blogs->hasNext()):
                        $article = $blogs->getNext(); ?>
                        <h2><?php echo $article['title']; ?></h2>
                        <p><?php echo substr($article['content'], 0, 200).'...'; ?></p>
                        <a href="blog.php?id=<?php echo $article['_id']; ?>">Read more</a>
                      <?php endwhile; ?>
                  </div>
              </div>
          </body>
</html>

我不确定如何从这里开始。

您有对博客集合的引用; 下一步是针对它进行查询:

public function __construct()
{
    $this->_mongo = DBConnection::instantiate();
    $this->_collection = $this->_mongo->getCollection(Blogs::COLLECTION);
    $this->_blogs = $this->_collection->find();
}

这将为您提供对结果集的引用,您可以迭代该结果集并获取各个博客文档。 然后,您必须弄清楚如何使这些文章可供您的php/html访问。

(以此作为视觉参考 http://devzone.zend.com/1730/getting-started-with-mongodb-and-php/)