Mongodb & Symfony 查询生成器

Mongodb & Symfony QueryBuilder

有人知道我在哪里可以找到关于 Symfony2 中 Mongodb QueryBuilder 的一些信息吗?也许一些例子或一些教程。 我用谷歌搜索了这个问题,但没有找到足够好的东西.. 更具体地说,我想根据嵌入式文档检索文档中的字段。 这是文档的示例:

{
"name":"Foo",
"age":"25",
"gender":"Male",
"products":[
        {
            "name":"Apple",
            "price":"12.00",
            "date":"2015-12-02"
        },
        {
            "name":"Banana",
            "price":"9.00",
            "date":"201-11-31"
        },
]

}

我想根据产品数组中的日期检索名称 "Foo"。 目前我使用 distinct() 来列出产品中的所有字段。

Simple doctrine mongodb example for EmbedMany in symfony

假设一个 League 可能有一个或多个 Team 所以它是一个 Embed Many like in your case. Full example is above. If you want more info then I think first 5 posts 就足够了。

用法示例

->findOneByProperty('name', 'Premiership')

REPO

use Doctrine\ODM\MongoDB\DocumentRepository;

class LeagueRepository extends DocumentRepository
{
    /**
     * @param string $field
     * @param string $data
     *
     * @return array|null|object
     */
    public function findOneByProperty($field, $data)
    {
        return
            $this->createQueryBuilder('League')
                ->field($field)->equals($data)
                ->getQuery()
                ->getSingleResult();
    }
}

虚拟数据

db.getCollection('league').find({})
/* 1 */
{
    "_id" : ObjectId("564fa07add576ebcf90041ac"),
    "name" : "Super Lig",
    "createdAt" : ISODate("2015-11-20T22:36:42.000Z")
}

/* 2 */
{
    "_id" : ObjectId("564fa081dd576ebbf90041ad"),
    "name" : "Premiership",
    "createdAt" : ISODate("2015-11-20T22:36:49.000Z"),
    "updatedAt" : ISODate("2015-11-20T22:37:33.000Z"),
    "teams" : [ 
        {
            "_id" : ObjectId("564fa0a6dd576ef2f80041ad"),
            "name" : "Arsenal",
            "createdAt" : ISODate("2015-11-20T22:37:26.000Z")
        }, 
        {
            "_id" : ObjectId("564fa0addd576ebaf90041ad"),
            "name" : "Liverpool",
            "createdAt" : ISODate("2015-11-20T22:37:33.000Z")
        }
    ]
}