2012-01-01 9 views
9

En MongoDB, puede utilizar objetos de estilo JSON, como en el siguiente para consultar una colección:¿Hay alguna forma de usar objetos de consulta MongoDB para filtrar matrices de JavaScript normales?

db.things.find({ x : { $ne : 3 }, y : 'foo' }); 

me gustaría volver a utilizar esa { x : { $ne : 3 }, y : 'foo' } poco y lo utilizan para filtrar un conjunto de objetos de JavaScript.

¿Hay algún código/biblioteca que pueda hacer eso, y que sea compatible con todas las opciones de consulta (o que tenga sentido de todos modos)?

+1

suena como una buena sugerencia para que la gente de MongoDB agregue a su biblioteca. –

Respuesta

8

Ok, así que aquí tiene otra oportunidad:

sift.js (NPM: tamizar) por Craig Condon es una biblioteca de filtrado gama inspirado en MongoDB. Es un poco como una alternativa a Underscore para personas que aman MongoDB. Sift.js admite operadores como $ in y $ gt, pero también puede filtrar matrices basadas en funciones e incluso funciona con objetos profundamente anidados en matrices.

Craig ha proporcionado algunos ejemplos que será familiar a Mongo usuarios:

var sift = require('sift'); 

sift({ $in: ['hello','world'] }, ['hello','sifted','array!']); // 
['hello'] 

Fuente: http://dailyjs.com/2012/01/04/node-roundup/

+0

¡Oh, esto se ve perfecto! Buen hallazgo Gracias – emertechie

+0

@Emil, eso es un buen hallazgo .. +1 – RameshVel

2

Underscore.js es una gran biblioteca para hacer mapas/reducir el tipo de trabajos en estructuras de JavaScript. Muy recomendable.

+0

Esos también están disponibles de forma nativa en 'Array.prototype' en navegadores más modernos. Creo que el OP quiere pasar un objeto para filtrar el modo Mongo (supongo que incluye operaciones atómicas como '$ in'). – pimvdb

+0

Correcto, quiero poder usar el mismo filtro para filtrar datos de MongoDB _y_ arreglos regulares de JavaScript – emertechie

2

No creo que pueda usar los filtros mongodb en matrices js normales. Debido a que hay que entender el hecho de que

Los filtros especificados en mongodb se evalúan en índices mongodb no en el resultado Javascript conjunto

Los medios de filtros evaluado (traducido) a consulta en un índice no el js. Entonces, lo que estás preguntando es una DSL encima de mongodb (o JS) que evaluará los filtros de índice mongodb en la matriz JS.

No creo que sea necesario ya que ambos sirven para diferentes propósitos (aunque es posible (difícil) escribir DSL personalizado). También hay marcos principales como underscore.js que ya proporcionan una manera de manejarlos.

2

Por lo que puedo ver, Mingo tiene un soporte de consultas de Mongo más amplio que Sift.

Cuestiones relacionadas