0

我在 yml 映射中有以下用户文档配置,其中 id 字段为 MongoId。我有一个用例,需要我使用聚合生成器来投影数据。当结果可用时,文档 _id 将作为 MongoId 对象返回。

有谁知道如何在返回字符串而不是 MongoId 中投影 _id 字段?

YML 中的文档映射:

UserDocument:
    fields:
        _id:
            id: true
        username:
            type: string

聚合查询:

$ab = $dm->createAggregationBuilder('UserDocument');
$ab->project()
   ->includeFields([
       'username',
   ]);
$users = $ab->execute();

结果:

{
  "_id": [],
  "username": "user"
}

谢谢

4

1 回答 1

0

假设您正在json_encode()获取结果?它显示为空数组的原因是 json_encode 如何序列化对象。

如果您不使用 JMS 之类的东西来序列化您的输出,则需要手动强制该字段的类型。最简单的解决方案是迭代您的结果并将值设置为字符串化版本:

foreach ($results as &$v) { $v['_id'] = (string) $v['_id']; }

默认情况下,当您使用 $project 运算符时,_id除非您将其排除,否则该字段将包含在内。

于 2017-04-13T18:31:33.500 回答