<!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"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Capped Collections — Doctrine MongoDB ODM 1.1.5 documentation</title> <link rel="stylesheet" href="../_static/bootstrap/css/bootstrap.min.css" type="text/css" /> <link rel="stylesheet" href="../_static/default.css" type="text/css" /> <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="../_static/layout.css" type="text/css" /> <link rel="stylesheet" href="../_static/configurationblock.css" type="text/css" /> <script type="text/javascript"> var DOCUMENTATION_OPTIONS = { URL_ROOT: '../', VERSION: '1.1.5', COLLAPSE_MODINDEX: false, FILE_SUFFIX: '.html', HAS_SOURCE: true }; </script> <script type="text/javascript" src="../_static/jquery.js"></script> <script type="text/javascript" src="../_static/configurationblock.js"></script> <script type="text/javascript" src="../_static/underscore.js"></script> <script type="text/javascript" src="../_static/configurationblock.js"></script> <script type="text/javascript" src="../_static/doctools.js"></script> <script type="text/javascript" src="../_static/configurationblock.js"></script> <script src="../_static/bootstrap/js/bootstrap.min.js"></script> <script type="text/javascript"> <!-- $(document).ready(function() { $("#versions").change(function() { var docsUrl = $(this).val(); window.location.href = docsUrl; }); }); --> </script> <link rel="shortcut icon" href="../_static/doctrine.ico"/> <link rel="search" title="Search" href="../search.html" /> <link rel="top" title="Doctrine MongoDB ODM 1.1.5 documentation" href="../index.html" /> </head> <body> <div id="wrapper"> <div id="header"> <h1 id="h1title"></h1> <div id="logo"> <a href="http://www.doctrine-project.org/">Doctrine - PHP Database Libraries</a> </div> </div> <div id="nav" class="cls"> <div class="tl cls"> <ul> <li><a target="_top" href="http://www.doctrine-project.org/">Home</a></li> <li><a target="_top" href="http://www.doctrine-project.org/about.html">About</a></li> <li><a target="_top" href="http://www.doctrine-project.org/projects.html">Projects</a></li> <li><a target="_top" href="http://www.doctrine-project.org/contribute.html">Contribute</a></li> <li><a target="_top" href="http://www.doctrine-project.org/community.html">Community</a></li> <li><a target="_top" href="http://www.doctrine-project.org/archive.html">Blog</a></li> <li><a target="_top" href="http://www.doctrine-project.org/jira">Development</a></li> </ul> </div> </div> <div id="content" class="cls"> <div class="related"> <h3>Navigation</h3> <ul> <li><a href="/">Doctrine Homepage</a> »</li> <li><a href="../index.html">Doctrine MongoDB ODM 1.1.5 documentation</a> »</li> </ul> </div> <div class="document"> <div class="documentwrapper"> <div class="bodywrapper"> <div class="body" > <div class="section" id="capped-collections"> <h1>Capped Collections<a class="headerlink" href="#capped-collections" title="Permalink to this headline">¶</a></h1> <p>Capped collections are fixed sized collections that have a very high performance auto-LRU age-out feature (age out is based on insertion order).</p> <p>In addition, capped collections automatically, with high performance, maintain insertion order for the objects in the collection; this is very powerful for certain use cases such as logging.</p> <div class="section" id="mapping"> <h2>Mapping<a class="headerlink" href="#mapping" title="Permalink to this headline">¶</a></h2> <p>You can configure the collection in the <code class="docutils literal"><span class="pre">collection</span></code> attribute of the <code class="docutils literal"><span class="pre">@Document</span></code> annotation:</p> <div class="configuration-block"> <ul class="simple"> <li><em>PHP</em><div class="highlight-php"><div class="highlight"><pre><span class="cp"><?php</span> <span class="sd">/**</span> <span class="sd"> * @Document(collection={</span> <span class="sd"> * "name"="collname",</span> <span class="sd"> * "capped"=true,</span> <span class="sd"> * "size"=100000,</span> <span class="sd"> * "max"=1000</span> <span class="sd"> * })</span> <span class="sd"> */</span> <span class="k">class</span> <span class="nc">Category</span> <span class="p">{</span> <span class="sd">/** @Id */</span> <span class="k">public</span> <span class="nv">$id</span><span class="p">;</span> <span class="sd">/** @Field(type="string") */</span> <span class="k">public</span> <span class="nv">$name</span><span class="p">;</span> <span class="p">}</span> </pre></div> </div> </li> <li><em>XML</em><div class="highlight-xml"><div class="highlight"><pre><span class="cp"><?xml version="1.0" encoding="UTF-8"?></span> <span class="nt"><doctrine-mongo-mapping</span> <span class="na">xmlns=</span><span class="s">"http://doctrine-project.org/schemas/odm/doctrine-mongo-mapping"</span> <span class="na">xmlns:xsi=</span><span class="s">"http://www.w3.org/2001/XMLSchema-instance"</span> <span class="na">xsi:schemaLocation=</span><span class="s">"http://doctrine-project.org/schemas/odm/doctrine-mongo-mapping</span> <span class="s"> http://doctrine-project.org/schemas/odm/doctrine-mongo-mapping.xsd"</span><span class="nt">></span> <span class="nt"><document</span> <span class="na">name=</span><span class="s">"Documents\Category"</span> <span class="na">collection=</span><span class="s">"collname"</span> <span class="na">capped-collection=</span><span class="s">"true"</span> <span class="na">capped-collection-size=</span><span class="s">"100000"</span> <span class="na">capped-collection-max=</span><span class="s">"1000"</span><span class="nt">></span> <span class="nt"><field</span> <span class="na">fieldName=</span><span class="s">"id"</span> <span class="na">id=</span><span class="s">"true"</span> <span class="nt">/></span> <span class="nt"><field</span> <span class="na">fieldName=</span><span class="s">"name"</span> <span class="na">type=</span><span class="s">"string"</span> <span class="nt">/></span> <span class="nt"></document></span> <span class="nt"></doctrine-mongo-mapping></span> </pre></div> </div> </li> <li><em>YAML</em><div class="highlight-yaml"><div class="highlight"><pre><span class="l l-Scalar l-Scalar-Plain">Documents\Category</span><span class="p p-Indicator">:</span> <span class="l l-Scalar l-Scalar-Plain">type</span><span class="p p-Indicator">:</span> <span class="l l-Scalar l-Scalar-Plain">document</span> <span class="l l-Scalar l-Scalar-Plain">collection</span><span class="p p-Indicator">:</span> <span class="l l-Scalar l-Scalar-Plain">name</span><span class="p p-Indicator">:</span> <span class="l l-Scalar l-Scalar-Plain">collname</span> <span class="l l-Scalar l-Scalar-Plain">capped</span><span class="p p-Indicator">:</span> <span class="l l-Scalar l-Scalar-Plain">true</span> <span class="l l-Scalar l-Scalar-Plain">size</span><span class="p p-Indicator">:</span> <span class="l l-Scalar l-Scalar-Plain">100000</span> <span class="l l-Scalar l-Scalar-Plain">max</span><span class="p p-Indicator">:</span> <span class="l l-Scalar l-Scalar-Plain">1000</span> <span class="l l-Scalar l-Scalar-Plain">fields</span><span class="p p-Indicator">:</span> <span class="l l-Scalar l-Scalar-Plain">id</span><span class="p p-Indicator">:</span> <span class="l l-Scalar l-Scalar-Plain">type</span><span class="p p-Indicator">:</span> <span class="l l-Scalar l-Scalar-Plain">id</span> <span class="l l-Scalar l-Scalar-Plain">id</span><span class="p p-Indicator">:</span> <span class="l l-Scalar l-Scalar-Plain">true</span> <span class="l l-Scalar l-Scalar-Plain">name</span><span class="p p-Indicator">:</span> <span class="l l-Scalar l-Scalar-Plain">type</span><span class="p p-Indicator">:</span> <span class="l l-Scalar l-Scalar-Plain">string</span> </pre></div> </div> </li> </ul> </div> </div> <div class="section" id="creating"> <h2>Creating<a class="headerlink" href="#creating" title="Permalink to this headline">¶</a></h2> <p>Remember that you must manually create the collections. If you let MongoDB create the collection lazily the first time it is selected, it will not be created with the capped configuration. You can create the collection for a document with the <code class="docutils literal"><span class="pre">SchemaManager</span></code> that can be acquired from your <code class="docutils literal"><span class="pre">DocumentManager</span></code> instance:</p> <div class="highlight-php"><div class="highlight"><pre><span class="cp"><?php</span> <span class="nv">$documentManager</span><span class="o">-></span><span class="na">getSchemaManager</span><span class="p">()</span><span class="o">-></span><span class="na">createDocumentCollection</span><span class="p">(</span><span class="s1">'Category'</span><span class="p">);</span> </pre></div> </div> <p>You can drop the collection too if it already exists:</p> <div class="highlight-php"><div class="highlight"><pre><span class="cp"><?php</span> <span class="nv">$documentManager</span><span class="o">-></span><span class="na">getSchemaManager</span><span class="p">()</span><span class="o">-></span><span class="na">dropDocumentCollection</span><span class="p">(</span><span class="s1">'Category'</span><span class="p">);</span> </pre></div> </div> </div> </div> </div> </div> </div> <div class="sphinxsidebar"> <div class="sphinxsidebarwrapper"> <div id="searchbox" style=""> <h3>Search</h3> <form class="search" action="http://readthedocs.org/search/project/" method="get"> <input type="text" name="q" size="18"> <input type="submit" value="Go"> <input type="hidden" name="selected_facets" value="project:"> </form> </div> <h3><a href="../index.html">Table Of Contents</a></h3> <ul> <li><a class="reference internal" href="#">Capped Collections</a><ul> <li><a class="reference internal" href="#mapping">Mapping</a></li> <li><a class="reference internal" href="#creating">Creating</a></li> </ul> </li> </ul> <h3>This Page</h3> <ul class="this-page-menu"> <li><a href="../_sources/reference/capped-collections.rst.txt" rel="nofollow">Show Source</a></li> </ul> </div> </div> <div class="clearer"></div> </div> <div class="footer"> © Copyright 2013, Doctrine Project Team. Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.6.2. <br/> <a target="_BLANK" href="http://www.servergrove.com"><img src="http://www.doctrine-project.org/_static/servergrove.jpg" /></a> <br/><br/> <form action="https://www.paypal.com/cgi-bin/webscr" method="post"> <input type="hidden" name="cmd" value="_s-xclick" /> <input type="hidden" name="hosted_button_id" value="BAE2E3XANQ77Y" /> <input type="image" src="https://www.paypal.com/en_US/i/btn/btn_donateCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!" /> <img alt="" border="0" src="https://www.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1" /> </form> </div> </div> <div id="bot-rcnr"> <div class="tl"><!-- corner --></div> </div> </div> <script src="http://www.google-analytics.com/urchin.js" type="text/javascript"> </script> <script type="text/javascript"> _uacct = "UA-288343-7"; urchinTracker(); </script> <a class="githublink" href="http://github.com/doctrine"><img src="https://s3.amazonaws.com/github/ribbons/forkme_right_orange_ff7600.png" alt="Fork me on GitHub"></a> </body> </html>