我在yml映射中有以下用户文档配置,其id字段为MongoId。我有一个用例,要求我使用聚合构建器来投影数据。当结果可用时,文档_id将作为MongoId Object返回。
有没有人知道如何在返回字符串而不是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"
}
由于
答案 0 :(得分:0)
假设您json_encode()
结果?它显示为空数组的原因是由于json_encode如何序列化对象。
如果您没有使用JMS等序列化输出,则需要手动强制该字段的类型。最简单的解决方案是迭代结果并将值设置为字符串化版本:
foreach ($results as &$v) { $v['_id'] = (string) $v['_id']; }
默认情况下,当您使用$ project运算符时,除非您将其排除,否则会包含_id
字段。