Mongodb&;Symfony QueryBuilder

Mongodb&;Symfony QueryBuilder,mongodb,symfony,query-builder,Mongodb,Symfony,Query Builder,有人知道我在哪里可以找到一些关于Mongodb QueryBuilder的信息吗?可能是一些示例或教程。 我用谷歌搜索了这个问题,但没有找到足够好的答案。。 更具体地说,我希望基于嵌入的文档检索文档中的字段。 以下是一个文档示例: { "name":"Foo", "age":"25", "gender":"Male", "products":[ { "name":"Apple", "price":"12.00",

有人知道我在哪里可以找到一些关于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"
        },
]
}

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

假设一个
联盟
可能有一个或多个
团队
s,因此它与您的情况类似。上面是完整的例子。如果你想要更多的信息,那么我认为对你来说就足够了

示例用法

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

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")
        }
    ]
}

谢谢Malcolm,我一直在那个页面上,但是我想要一些更复杂的例子,如果它存在的话当然:DI会建议你改变你关于如何实现某个特定查询的问题,因为现在,这个问题是否应该结束还有待讨论:-/好的,就这样;)太棒了!非常感谢。没问题,祝你愉快。如果它解决了您的问题,请接受它,以便其他人可以从中受益。感谢基于联盟文档中给出的示例,“如何在twig中显示球队名称”,我尝试使用$var.products,但由于它是一个数组,因此不起作用。Symfony如何处理这件事?我只能获取父文档字段(姓名、年龄、性别等),但无法获取产品字段您需要在
$league
上运行
foreach
,并在循环中获取
team
。如果你喜欢的话,这只是一种经典的方式。这里有很多例子。类似于:
foreach($leagues as$league){$team=$league->getTeam();}
等等。谷歌一下就可以了。好吧,谢谢你!回家后我会尝试一下的,很抱歉我没有提出这样的问题……我是新来的symfony:p