PHP MongoDB запрос динамических значений

Я хочу запросить содержимое (текст) внутри моего dynamic values keys, но я не могу найти самый простой способ сделать это.

Моя коллекция монго выглядит так:

{
"_id" : ObjectId("566aecb8f0e46491068b456c"),
"metadatas" : [
{
"schema_id" : "f645fabef0e464e51e8b4567",
"values" : {
"name" : "Test",
"age" : NumberLong(29),
"address" : "Test1"},
"updated_on" : ISODate("2015-12-11T00:00:00Z")
},
{
"schema_id" : "d745fabef0e464e51e8b4567",
"values" : {
"something_else" : "lipsum"},
"updated_on" : ISODate("2016-12-11T00:00:00Z")
}
],
}

Как я могу динамически запрашивать то, что внутри моего values так как я не могу сделать $db->collec->find(array('metadatas.values.name' => $regex)) потому что у меня может быть другой динамический ключ вместо имени?

заранее спасибо

0

Решение

Я закончил тем, что сохранил свои ключи уникально в другой коллекции, а затем построил запрос и конкатенировал его перед применением на основе идеи @Sammaye:

    $regex = new \MongoRegex("/^$query/i");

# First get all the dynamic keys you need to filter
$keys_to_search = $this->db->metadata_keys->find();
$this->log($keys_to_search);

$query_builder = array('$or'=>array());

foreach ($keys_to_search as $value){
array_push(
$query_builder['$or'],
array('metadatas.values.' . $value['key'] => $regex)
);
}

$this->log($query_builder);

$search_metadata_name = $this->db->filesfolders->find(
$query_builder, array('sql_fileid' => true)
);
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]