У меня есть следующий документ:
{
"_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}})
Но я хочу что-то подобное (не соответствует моему документу, причина других ключей в метаданных):
db.fs.files.find({"metadata"{"links":{"type":"instrument","key":5}}})
В качестве фона, в моем PHP-коде я хочу иметь функцию "найти", которая получает критерии, применяемые только в метаданных, и поэтому мне нужно что-то не очень приятное, например:
public function find(array $criteria)
{
$extendedCriteria = array();
foreach($criteria as $key => $value) {
$extendedCriteria['metadata.'.$key => $value];
}
...
}