访问以“@”开头的JSON字段 - PHP MongoDB库

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了访问以“@”开头的JSON字段 - PHP MongoDB库相关的知识,希望对你有一定的参考价值。

我有一个MongoDB数据库,其中包含由遵循此模式的人员组成的集合

    "_id" : ObjectId("5a3be781575621b1e1c7512d"),
    "@id" : "http://minerva.atcult.it/rdf/12749587-539f-359f-a48a-e3a2279c8fa8",
    "@type" : "foaf:Person",
    "name" : "Gallenga, Romeo"

以及由此类项目组成的另一个集合

{
    "_id" : ObjectId("5a3be71b575621b1e1c73f24"),
    "@id" : "http://minerva.atcult.it/rdf/000000017103",
    "@type" : [
            "bibo:MultiVolumeBook",
            "bibo:Book"
    ],
    "creator" : [
            "http://minerva.atcult.it/rdf/9959464b-24e6-338f-b79a-5705848861cd",
            "http://minerva.atcult.it/rdf/22ef493f-52ed-3b13-9756-03db125128e1",
            "http://minerva.atcult.it/rdf/adc7ca8d-ebb5-3879-bb76-38f7344a978d",
            "http://minerva.atcult.it/rdf/3a483833-4ada-30a6-8157-f4c61c6daf47"
    ],
    "identifier" : "000000017103",
    "title" : "Replica della formella del 14 sec. del campanile di Giotto raffigurante uno studio medico",        
}

我正在使用MongoDB库使用php 5.6。

Goal

我想查询具有特定创建者(显然是一个人)的项目。 通过查询(有效)

$authorlist=$pcollection->find(['name'=>$pregex],['projection'=>['_id'=>0,'@id'=>1,'name'=>1]]);

涉及正则表达式$ pregex,我检索了该人的投影(cointaning @id和name字段),然后我尝试编写以下查询以获取项目的字段创建者和人员的@id字段之间的匹配

  $documentlist=$icollection->find(['creator'=>($person->@id)]);

但它不起作用,因为PHP不接受以@开头的字段(IDE表示“预期字段名称”)。 我也试过了

$documentlist=$icollection->find(['creator'=>($person->'@id')]);

但它不起作用。 那么,在PHP中以什么方式访问以“@”开头的JSON字段?

答案

我想它已经是重复的,但访问非常规名称的字段通常如下:

$person->{'strange-field-name'};
// for your case it is:
$person->{'@id'}

以上是关于访问以“@”开头的JSON字段 - PHP MongoDB库的主要内容,如果未能解决你的问题,请参考以下文章

php里怎么判断字段里是不是以1开头的字段?

4/3/2017 Mon.(Day02)

PHP 如何轻松访问PHP中的JSON(如具有多个字段的JSON记录集)

如何在PHP中轻松访问JSON(比如具有多个字段的JSON记录集)

无法访问以 http 开头的对象变量

在访问数据库中插入以零开头的值