Mongodb:选择集合中的嵌入文档
我有一个像下面这样的收藏。嵌入式风格。问题是查询不会选择具有给定Mongodb:选择集合中的嵌入文档,mongodb,symfony,Mongodb,Symfony,我有一个像下面这样的收藏。嵌入式风格。问题是查询不会选择具有给定ID的预期用户。我做错了什么?还有更好的办法吗 注意:如果我从查询中删除user位,它将返回所有具有预期状态的记录,因此查询本身是正常的 提前谢谢 $query = $dm ->createQueryBuilder('EmMaBundle:Design') ->field('user.id')->equals('53d62b692ac1fb22d9000000')
ID
的预期用户。我做错了什么?还有更好的办法吗
注意:如果我从查询中删除user
位,它将返回所有具有预期状态的记录
,因此查询本身是正常的
提前谢谢
$query = $dm
->createQueryBuilder('EmMaBundle:Design')
->field('user.id')->equals('53d62b692ac1fb22d9000000')
->field('status')->equals(0);
嘿,那里,
尝试使用user.\u id而不是选择器中的user.id。1)您应该查询用户。$id
2) user.$id
字段包含ObjectId
而不是字符串。用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") } )
我尝试了'user.id'
,'user.\u id'
,'user.$id'
和新的\MongoId(“53d62b692ac1fb22d9000000”)
版本,但都没有成功。我刚才添加到答案中的mongo shell查询是否会为您返回任何结果?shell查询也不起作用。显然,查询嵌入式文档无论如何都是一个痛苦的过程,因此我决定现在也将user.id
直接作为userId
字段保存到文档中,这样我就可以直接查询它了。这就解决了目前的问题。我也读过$elemMatch
。嗯,奇怪!很抱歉,我帮不了你什么忙。我只是擦了擦数据库,然后再试一次。现在它起作用了。我不明白为什么。我以前遇到过一些更奇怪的问题,所以我想我应该开始研究不同的NoSQL。
db.collection.find( { 'user.$id': ObjectId("53d62b692ac1fb22d9000000") } )