访问以“@”开头的 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"
和另一个由 items 组成的集合像这样
{
"_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",
}
我正在使用 PHP 5.6 使用 MongoDB 库。
目标
我想查询具有特定创作者的项目(显然是人).
通过查询(有效)
$authorlist=$pcollection->find(['name'=>$pregex],['projection'=>['_id'=>0,'@id'=>1,'name'=>1]]);
涉及正则表达式 $pregex ,我检索了一个投影(包含 @id 和 name 字段),然后我尝试编写以下查询以获取 items 的字段 creator 和 [= persons
的 34=]@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'}
我有一个 MongoDB 数据库,其中包含一个由 人 组成的集合,遵循这种模式
"_id" : ObjectId("5a3be781575621b1e1c7512d"),
"@id" : "http://minerva.atcult.it/rdf/12749587-539f-359f-a48a-e3a2279c8fa8",
"@type" : "foaf:Person",
"name" : "Gallenga, Romeo"
和另一个由 items 组成的集合像这样
{
"_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",
}
我正在使用 PHP 5.6 使用 MongoDB 库。
目标
我想查询具有特定创作者的项目(显然是人).
通过查询(有效)
$authorlist=$pcollection->find(['name'=>$pregex],['projection'=>['_id'=>0,'@id'=>1,'name'=>1]]);
涉及正则表达式 $pregex ,我检索了一个投影(包含 @id 和 name 字段),然后我尝试编写以下查询以获取 items 的字段 creator 和 [= persons
的 34=]@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'}