我一直在寻找类似MongoDb(http://docs.mongodb.org/manual/applications/read/#find,docs.mongodb.org/manual/reference/operators/)查询表达式对象评估函数的实现或者一类.它可能不包括所有高级功能,并且应该具有可扩展的体系结构.
类似MongoDB的查询表达式对象易于理解和使用,提供编写干净,自解释代码的能力,因为要搜索的查询和对象都是关联数组.
基本上说它是一个方便的功能,从PHP数组中提取信息.知道了数组结构(arrayPath),它将允许对多维数组数据执行操作,而不需要多个嵌套循环.
如果您不熟悉MongoDb,请查看给定的表达式对象和数组以进行搜索.
为简单起见,我把它写成JSON字符串.对象内容毫无意义,只需显示MongoDb查询语法即可.
{
"name": "Mongo",
"type": "db",
"arch": {
"$in": [
"x86",
"x64"
]
},
"version": {
"$gte": 22
},
"released": {
"$or": {
"$lt": 2013,
"$gt": 2012
}
}
}
Run Code Online (Sandbox Code Playgroud)
[
{
"name": "Mongo",
"type": "db",
"release": {
"arch": "x86",
"version": 22,
"year": 2012
}
},
{
"name": "Mongo",
"type": "db",
"release": {
"arch": "x64",
"version": 21,
"year": 2012
}
},
{
"name": "Mongo",
"type": …Run Code Online (Sandbox Code Playgroud) php if-statement multidimensional-array query-expressions mongodb
在MongoDB中,您可以使用JSON样式的对象(如下所示)来查询集合:
db.things.find({ x : { $ne : 3 }, y : 'foo' });
Run Code Online (Sandbox Code Playgroud)
我想重用那个{ x : { $ne : 3 }, y : 'foo' }位并用它来过滤JavaScript对象的数组.
是否有任何代码/库可以做到这一点,并且支持所有查询选项(或者无论如何都有意义)?
考虑在此JSON对象中表达的以下(相当复杂的)查询:
{
"name": "Kindle Fire",
"sale": true,
"price": {
"$gt": 199,
"$lt": 264
},
"price.vat": { // bogus, just to show $a['price.vat'] == $a['price']['vat']
"$lte": 1.2
},
"$or": {
"qty": {
"$gt": 30
},
"eta": {
"$or": {
"$lt": 3,
"$gt": 30
}
}
},
"countriesAvailable": {
"$in": [
"US",
"CA"
]
}
}
Run Code Online (Sandbox Code Playgroud)
我想解析那个JSON,以便它计算到PHP的等价物($a我的目标数据在哪里):
$a['name'] == 'Kindle Fire' &&
$a['sale'] == true &&
(
$a['price'] > 199 && $a['price'] < 264
) &&
$a['price']['vat'] <= 1.2 …Run Code Online (Sandbox Code Playgroud)