有人知道在哪里可以找到有关Symfony2中Mongodb QueryBuilder的一些信息吗?也许是一些例子或一些教程。 我用Google搜索了问题,但没有找到足够好的东西.. 更具体地说,我想基于嵌入的文档检索文档中的字段。 以下是文档示例:
{
"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()列出产品中的所有字段。
答案 0 :(得分:1)
Simple doctrine mongodb example for EmbedMany in symfony
假设League
可能有一个或多个Team
s,因此在您的情况下它是Embed Many。完整的例子如上。如果您想了解更多信息,我认为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();
}
}
DUMMY DATA
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")
}
]
}