PHP MongoDB 查询动态值
PHP MongoDB query dynamic values
我想查询 dynamic values keys
中的内容(文本),但我想不出最简单的方法。
所以我的mongocollection是这样的:
{
"_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)
);
我想查询 dynamic values keys
中的内容(文本),但我想不出最简单的方法。
所以我的mongocollection是这样的:
{
"_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)
);