是否有一个javascript库,允许我在类似于MongoDB的查询语言的DSL中表达对象谓词?为了清楚大型程序,我希望能够说:
var obj = {
a: 1,
b: 'abcdefg'
}, qry = {
a: { $gt: 0 },
b: /^abc/
};
if(query(qry).matches(obj)) {
// do something appropriate since
}
Run Code Online (Sandbox Code Playgroud)
代替:
var obj = {
a: 1,
b: 'abcdefg'
};
if(obj.a>0 && qry.b.test(obj.b)) {
// do something appropriate
}
Run Code Online (Sandbox Code Playgroud)
我正在使用Node.js,因此NPM上的任何内容都会很棒.如果库可以从数组中选择对象以及仅匹配单个对象,那将是一个额外的好处.
我回顾了这两个相关的问题,但对我的情况并没有特别的帮助:
我一直在寻找类似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
我试图找到一种方法来返回数组的父键的值.
例如,从下面的数组我想找出父元素的键,其中$ array ['id'] =="0002".父键是显而易见的,因为它在这里定义(它将是'产品'),但通常它是动态的,因此问题.但是'id'的'id'和值是已知的.
[0] => Array
(
[data] =>
[id] => 0000
[name] => Swirl
[categories] => Array
(
[0] => Array
(
[id] => 0001
[name] => Whirl
[products] => Array
(
[0] => Array
(
[id] => 0002
[filename] => 1.jpg
)
[1] => Array
(
[id] => 0003
[filename] => 2.jpg
)
)
)
)
)
Run Code Online (Sandbox Code Playgroud) mongodb ×2
php ×2
arrays ×1
if-statement ×1
javascript ×1
key ×1
node.js ×1
parent ×1
predicate ×1
traversal ×1