MongoDB:将JSON字段转换为字段以方便查询

时间:2020-06-26 13:03:32

标签: php json mongodb symfony

承诺:我是MongoDB的初学者

这是mongodb文件:

{ "_id" : ObjectId("5ed7643985b9e34fa96fa2dc"), "message" : "{\"data\":\"2020-06-03T08:50:01.075289Z\",\"users\":\"37\",\"azione\":\"Inserimento prima Scheda di Controllo\",\"soggetto\":\"schede_gravidanza\",\"oggetto\":[{\"id\":47},{\"codiceScheda\":\"2020TF63001\"},{\"codiceGravidanza\":\"TF63\"},{\"stato\":\"O\"},{\"peso\":\"70\"},{\"paMax\":\"70\"},{\"paMin\":\"80\"},{\"fc\":\"90\"},{\"codUteIns\":\"9310\"}]}", "context" : [ ], "level" : 200, "level_name" : "INFO", "channel" : "PREG", "datetime" : "2020-06-03 10:50:01", "extra" : [ ] }

enter image description here

我想将消息字段(当前为JSON)转换为字段,例如: enter image description here

这使我无需解码json就可以直接访问字段,例如:

message.data,message.oggetto.id等

因为我目前被迫使用正则表达式来选择具有“ where”条件的数据。

示例:

$repo = $mongodb->getRepository('LogBundle:Log');
        $mongodata = $repo->findBy(
            [
                'channel' => ['$regex' => 'CARD|PREG'],
                'datetime' => ['$gt' => $this->parameters['data_from'], '$lt' => $this->parameters['data_to']],
                'message' => [
                    '$regex' => '(\"users\":\"(' . implode("|", $this->fullParameters['doctors']) . ')\")(.*\"Inserimento (prima|nuova) Scheda di Controllo\")'
                ],
            ],
            array("datetime" => "DESC")
        );

提前谢谢

0 个答案:

没有答案