在MongoDB中,您可以使用JSON样式的对象(如下所示)来查询集合:
db.things.find({ x : { $ne : 3 }, y : 'foo' });
我想重用那个{ x : { $ne : 3 }, y : 'foo' }
位并用它来过滤JavaScript对象数组。
是否有任何代码/库可以做到这一点,并且支持所有查询选项(或者无论如何都有意义)?
答案 0 :(得分:8)
好的,所以这是另一次尝试:
Craig Condon的sift.js(npm:sift)是一个受MongoDB启发的阵列 过滤库。它有点像Underscore的替代品 喜欢MongoDB的人。 Sift.js支持$ in和$ gt等运算符, 但也可以根据功能过滤数组,甚至可以使用 数组中深层嵌套的对象。
Craig提供了一些看起来很熟悉Mongo的例子 用户:
var sift = require('sift');
sift({ $in: ['hello','world'] }, ['hello','sifted','array!']); //
['hello']
答案 1 :(得分:3)
据我所知,Mingo比Sift有更广泛的Mongo查询支持。
答案 2 :(得分:2)
Underscore.js是一个很棒的库,用于在javascript结构上映射/减少作业类型。强烈推荐。
答案 3 :(得分:1)
我不认为你可以在普通的js数组中使用mongodb过滤器。因为你需要了解
的事实评估mongodb中指定的过滤器 mongodb索引不在javascript结果集中
表示过滤器被评估(翻译)以查询索引而不是js。所以你要问的是在mongodb(或JS)之上的DSL,它将评估JS数组中的mongodb索引过滤器。
我不认为它需要它,因为它们都有不同的用途(虽然它可能(很难)编写自定义DSL)。还有像underscore.js这样的主要框架已经提供了处理这些的方法。
答案 4 :(得分:1)
您可以使用https://github.com/mirek/node-json-criteria库,它在JSON对象上以MongoDB格式评估critera查询。