什么样的Javascript库可以评估对象的MongoDB-like查询谓词?

是否有一个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上的任何东西都会很棒。 如果库可以从数组中select对象以及匹配单个对象,那将是额外的好处。

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

  • 实现goMongoDB-like查询expression式对象评估
  • 在PHP中评估类似MongoDB的JSON查询

好的,我find了答案: Sift.js

现在回答这个问题:这个问题已经被问到过了 。 要点是:

  • 如果你真的想要Mongo语法,请使用Sift
  • 如果你想成为主stream,像其他人一样使用Underscore.js 。 除了基本上做了一些稍微不同的语法筛选之外,它还有许多方便的函数。
  • 您可能根本不需要任何库 – 现代浏览器直接在Array原型上支持许多有用的function,例如filter()

作为最后一点, mongodb-riff似乎正在尝试做类似的事情,但是目前该页面清楚地表明它不起作用 – 可能已经被放弃了。 但他的自述至less是有价值的:-),他提到筛选和查询引擎 ,看起来更成熟,但对我来说太复杂了!

就我个人而言,我打算用Underscore去做,因为现在我已经第一次研究它了,我意识到它有我需要的一些方便的东西,再加上我只是想做一些简单的function,比如什么是_.find()在Underscore中。 但是我想如果你想做更复杂的类似Mongo的查询,你可以在Sift中使用更less的LOC。

退房明戈

我没有find合适的替代scheme后实施它。

它仍在积极开发中,但是可用。 testing覆盖不完整。

可以从浏览器和nodejs中使用

[编辑]

这个库现在是前端最完整的MongoDB查询语言实现。

lodash.js

你想使用lodash.js。 它代替了underscore.js。 性能是一倍的速度。

http://lodash.com/

https://github.com/mirek/node-json-criteria库做的确如此 – 使用MongoDB查询格式评估对JSON对象的条件查询。

我能find的最接近的是linq.js ,这是LINQ for JavaScript。 希望这会对你有所帮助。