如何通过 MongoDB 的 Doctrine ODM 中的参考文档查找?
我的“params”集合中有一个文档,如下所示:
{
"_id": ObjectId("4d124cef3ffcf6f410000037"),
"code": "color",
"productTypes": [
{
"$ref": "productTypes",
"$id": ObjectId("4d120a2d2b8d8d3010000000"),
"$db": "test"
}
]
}
引用的文档是这样的:
{
"_id": ObjectId("4d120a2d2b8d8d3010000000"),
"code": "car"
}
我正在使用 DoctrineODM 来获取引用“productType”为“car”的“param”文档。我正在使用这段代码:
$query = $dm->createQuery('Cms\Model\Param');
$query->field('productTypes.code')->equals('car');
$result = $query->execute();
var_dump($result);
但结果是一个空数组。我该怎么做?
I have one document in my "params" collection like this:
{
"_id": ObjectId("4d124cef3ffcf6f410000037"),
"code": "color",
"productTypes": [
{
"$ref": "productTypes",
"$id": ObjectId("4d120a2d2b8d8d3010000000"),
"$db": "test"
}
]
}
the referenced document is this:
{
"_id": ObjectId("4d120a2d2b8d8d3010000000"),
"code": "car"
}
I'm using DoctrineODM to fetch the "param" documents which referenced "productType" is "car". I'm using this code:
$query = $dm->createQuery('Cms\Model\Param');
$query->field('productTypes.code')->equals('car');
$result = $query->execute();
var_dump($result);
but the result is an empty array. How can i do this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
如果您使用 ReferenceMany 或 ReferenceOne,则无法通过任何参考文档字段进行查询,参考文档 id 除外。
如果您需要从引用的集合中查询
code
,您应该使用EmbedMany
而不是ReferenceMany
。在这种情况下,您的文档将是:
并且以下查询将起作用:
此外,如果您的 ProductType 代码是唯一的,您可以使用它而不是
MongoId
,在这种情况下,您可以查询 $id:引用的文档:
查询:
If you using ReferenceMany or ReferenceOne you can't query by any reference document field, except reference document id.
If you need query on
code
from referenced collection you should useEmbedMany
instead ofReferenceMany
.In this case your document will be:
And following query will work:
Also if your ProductType code is unique you can use it instead of
MongoId
, in this case you can query on $id:Referenced document:
Query:
您必须对 @MongoDB\ReferenceOne 使用查询生成器的 references() 方法,例如 https://doctrine-mongodb-odm.readthedocs.org/en/latest/reference/query- builder-api.html
PS:使用 includesReferenceTo() 和 @MongoDB\ReferenceMany
You must use the references() method of Query Builder for a @MongoDB\ReferenceOne like https://doctrine-mongodb-odm.readthedocs.org/en/latest/reference/query-builder-api.html
PS: use includesReferenceTo() a @MongoDB\ReferenceMany