Mongodb&;Symfony QueryBuilder
有人知道我在哪里可以找到一些关于Mongodb 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",
{
"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