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 } nreturn: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