2
나는 다음과 같은 문서가 있습니다점 표기법 이외의 다른 방법이 있습니까?
{
"_id":ObjectId("4eb28bd60078621a7d0000aa"),
"metadata":{
"xuuid":{
"scope":"g",
"version":1,
"uuid":"0c1969c55b0241bfa3d37c6ceb900bba"
},
"custom":[
],
"file":{
"staticDataProviderId":4,
"contentType":"factsheet",
"name":"hugos tagebuch",
"size":2345,
"source":"bamldocuments",
"mimeType":"application/pdf",
"created":1319623020,
"modified":1319623020,
"accessed":1349623020,
"locales":[
"EN_us",
"CH_fr"
],
"countries":[
"CH"
],
"status":"published"
},
"links":[
{
"type":"instrument",
"key":5
},
{
"type":"instrument",
"key":3
}
]
},
"chunkSize":262144,
"length":14,
"md5":"2dd900d9be40e2dd3fc69cc77c14726c"
}
나는 다음과 같은 쿼리를 찾을 수 있습니다
db.fs.files.find({"metadata.links":{"type":"instrument","key":5}})
을하지만 내 문서와 일치하지 않는 (즉, 같은 somtehing 기타의 원인을 갖고 싶어 메타 데이터 키) : 배경으로
db.fs.files.find({"metadata"{"links":{"type":"instrument","key":5}}})
, 내 PHP 코드에서 내가이 기준은 메타 데이터에 적용 가져옵니다 "찾기"기능을 갖고 싶어하고 그래서 뭔가가 필요 그리 좋은 같은 :
db.foo.find({foo: {"$elemMatch": {shape: "square", color: "purple"}}})
이 ... 필드와 "foo는"요소에 맞게 : 그들이 그렇게처럼 사용할 수 있습니다 $ elemMatch 연산자를 언급 the page on dot notation의 끝으로
public function find(array $criteria)
{
$extendedCriteria = array();
foreach($criteria as $key => $value) {
$extendedCriteria['metadata.'.$key => $value];
}
...
}
당신이 명확하게 할 수 있습니까? 두 번째 쿼리에서 원하는 것은 무엇입니까? { "type": "instrument", "key": 5}가 필드 metadata.links의 유일한 객체 인 레코드를 찾으십니까? – chim