Я хочу запросить содержимое (текст) внутри моего 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))
потому что у меня может быть другой динамический ключ вместо имени?
заранее спасибо
Я закончил тем, что сохранил свои ключи уникально в другой коллекции, а затем построил запрос и конкатенировал его перед применением на основе идеи @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)
);
Других решений пока нет …