Mongodb:在集合中选择嵌入文档

时间:2014-07-29 10:30:10

标签: mongodb symfony

我有一个如下的集合。嵌入式风格。问题是查询不会选择具有给定user的预期ID。我究竟做错了什么?还有其他更好的办法吗?

注意:如果我从查询中删除了user位,它会返回所有具有预期statuses的记录,因此查询本身就可以了。

提前致谢

    $query = $dm
        ->createQueryBuilder('EmMaBundle:Design')
        ->field('user.id')->equals('53d62b692ac1fb22d9000000')
        ->field('status')->equals(0);

enter image description here

2 个答案:

答案 0 :(得分:1)

1)您应该查询user.$id

2)user.$id字段包含ObjectId而不是String。尝试使用MongoId例如

$userId = new \MongoId("53d62b692ac1fb22d9000000");

$query = $dm
    ->createQueryBuilder('EmMaBundle:Design')
    ->field('user.$id')->equals($userId)
    ->field('status')->equals(0);

shell查询:

db.collection.find( { 'user.$id': ObjectId("53d62b692ac1fb22d9000000") } )

答案 1 :(得分:0)

$query = $dm
        ->createQueryBuilder('EmMaBundle:Design')
        ->field('user._id')->equals('53d62b692ac1fb22d9000000')
        ->field('status')->equals(0);
嘿那里, 尝试在选择器中使用user._id而不是user.id。