我正在使用 DoctrineMongoDBBundle 并想要获取一些记录。在我的存储库类中,我有代码:
return $this->createQueryBuilder()->field('categories.data')
->equals($categoryId)->getQuery()->execute();
在探查器的日志中,它生成绝对有效的查询:
db.recipe.find({ "categories.data": 16 }).sort([ ]);
当我通过控制台客户端运行此查询时,它会返回记录。但是存储库类什么都没有。
我的服务器日志如下所示:
query test_database.recipe query: { $query: { categories.data: "2" }, $orderby: {} } ntoreturn:0 keyUpdates:0 nreturned:0 reslen:20 0ms
但是如果我运行普通的 PHP 脚本来获取相同的数据:
<?php
$mongo = new Mongo();
$col = $mongo->test_database->recipe;
foreach ($col->find(array("categories.data" => 2)) as $r) {
print_r($r);
}
我得到了结果,服务器的日志如下所示:
query test_database.recipe query: { categories.data: 2 } ntoreturn:0 keyUpdates:0 nreturned:1 reslen:1037 0ms
所以区别是:
查询 test_database.recipe 查询:{ $query: { categories.data: "2" }, $orderby : {} } ntoreturn:0 keyUpdates:0 nreturned:0 reslen :20 0ms
查询 test_database.recipe 查询:{ categories.data: 2 } ntoreturn:0 keyUpdates:0 nreturned :1 reslen:1037 0ms[/quote]
检查了 MongoDB 2.1.1 和 1.8.1,deps文件:
[symfony]
git=http://github.com/symfony/symfony.git
version=origin/2.0
[doctrine-common]
git=http://github.com/doctrine/common.git
version=2.2.2
[doctrine-dbal]
git=http://github.com/doctrine/dbal.git
version=2.1.7
[doctrine]
git=http://github.com/doctrine/doctrine2.git
version=2.1.7
[doctrine-mongodb-odm]
git=http://github.com/doctrine/mongodb-odm.git
[DoctrineMongoDBBundle]
git=http://github.com/doctrine/DoctrineMongoDBBundle.git
target=/bundles/Symfony/Bundle/DoctrineMongoDBBundle
version=origin/2.0