javascript - 什么 Javascript 库可以针对对象评估类似 MongoDB 的查询谓词?

标签 javascript node.js mongodb predicate

是否有一个 javascript 库可以让我在类似于 MongoDB 查询语言的 DSL 中表达对象谓词?为了在大型程序中清晰起见,我想说:

var obj = { 
    a: 1, 
    b: 'abcdefg' 
}, qry = { 
    a: { $gt: 0 }, 
    b: /^abc/ 
}; 

if(query(qry).matches(obj)) { 
    // do something appropriate since 
} 

代替:

var obj = { 
    a: 1, 
    b: 'abcdefg' 
}; 
if(obj.a>0 && qry.b.test(obj.b)) { 
    // do something appropriate 
} 

我正在使用 Node.js,所以 NPM 上的任何内容会很好。如果库可以从数组中选择对象以及匹配单个对象,那将是一个额外的好处。

我回顾了这两个相关的问题,但它们对我的情况并不是特别有帮助:

最佳答案

好的,我找到了答案:Sift.js

现在是长答案:这是 asked and answered before .重点是:

  • 如果你真的想要 Mongo 语法,请使用 Sift
  • 如果您想更主流,请使用 Underscore.js像其他人一样。除了它基本上可以实现 sift 的功能之外,它还有许多方便的功能,但语法略有不同。
  • 您可能根本不需要任何库 - 现代浏览器直接在 Array prototype 上支持许多有用的功能。 ,例如 filter()

最后,mongodb-riff似乎正在尝试做类似的事情,但目前该页面明确指出它不起作用 - 也许它已被放弃。但他的自述文件至少是有值(value)的 :-),他提到了 sift 和 Query Engine看起来更成熟,虽然对我来说太复杂了!

就我个人而言,我将使用 Underscore,因为现在我第一次研究它,我意识到它有很多我需要的方便的东西,而且我真的只想做一些简单的功能,比如是 _.find() 中的下划线。但我想如果你想做更复杂的类似 mongo 的查询,你会用 Sift 在更少的 LOC 中完成。

关于javascript - 什么 Javascript 库可以针对对象评估类似 MongoDB 的查询谓词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15397668/

相关文章:

mongodb - MongoDB 2.4 和 2.6 之间的多边形几何图形在 $not $geoWithin 中的不同语义

javascript - XHTML 或 SVG 中的 Ecmascript

javascript - 如何找到生成XMLHttpRequest的页面的文件名?

javascript - 正则表达式无法验证 28 到 31 之间的日期

node.js - 如何正确格式化此 EJS 三元条件?

python - 为什么这段代码中 Python 和 Node.js 的 HMAC 结果不同?

node.js - 如何在保存后将属性保存到 Mongoose 文档

javascript: 未捕获类型错误: 无法读取未定义的属性 'objects': jquery-csv

javascript - 广播到房间的套接字 IO 无法正常工作

c# - 使用官方 c# 驱动程序在 MongoDB 中按 $natural 排序