![](/img/trans.png)
[英]Attempted to call an undefined method named "allowDiskUse" of class "Doctrine\ODM\MongoDB\Aggregation\Builder
[英]Doctrine mongodb-odm aggregation builder query with ObjectId
我在yml映射中具有以下用户文档配置,其中id字段为MongoId。 我有使用聚合生成器来投影数据所需的用例。 结果可用时,文档_id将作为MongoId对象返回。
有谁知道如何投影_id字段以返回字符串而不是MongoId?
YML中的文档映射:
UserDocument:
fields:
_id:
id: true
username:
type: string
汇总查询:
$ab = $dm->createAggregationBuilder('UserDocument');
$ab->project()
->includeFields([
'username',
]);
$users = $ab->execute();
结果:
{
"_id": [],
"username": "user"
}
谢谢
假设您是json_encode()
的结果? 它显示为空数组的原因是由于json_encode如何序列化对象。
如果您没有使用JMS之类的东西来序列化您的输出,则需要手动强制该字段的类型。 最简单的解决方案是遍历您的结果并将值设置为字符串化的版本:
foreach ($results as &$v) { $v['_id'] = (string) $v['_id']; }
默认情况下,当您使用$ project运算符时,除非排除它,否则将包含_id
字段。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.