繁体   English   中英

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

[英]Access JSON field starting with “@” - PHP MongoDB library

我有一个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。

目标

我想查询有特定创作者 (这显然是一个的项目
通过查询(有效)

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

包括正则表达式$ pregex,我检索到的投影(cointaning的@idname字段)的人,然后我试着写下面的查询,以获得beetween 项目领域的创造者@id人员的匹配

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

但这没有用,因为PHP不接受以@开头的字段(IDE说“ expected field name”)。
我也试过

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

但这没用。
那么, 在PHP中访问以“ @”开头的JSON字段的方法是什么?

我想它已经是重复的了,但是访问具有非常规名称的字段通常是这样完成的:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM