我有一个名为User的MongoDB文档。我还有一个包含所有可能的"可更新"字段的数组(这是针对第三方可以通过发送请求来更新数据库中字段的 API)。我想做这样的事情:
$user_document->set(array($field => $value));
$document_manager->flush();
其中$user_document是FindOneBy获取的文档,$field和$value是API请求中的值。这行不通。如何手动将值插入给定字段?我不想使用 setFieldName 方法,因为有很多字段,我想将它们保存在数组中。
我已经解决了这个问题,这是正确的方法:
$result = $document_manager
->createQueryBuilder('AppBundle:User')
->findAndUpdate()
->returnNew()
->field($field)->set($value)
->field('id')->equals($given_id)
->getQuery()
->execute();