繁体   English   中英

具有ObjectId的Doctrine mongodb-odm聚合生成器查询

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM