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