tutorial nodejs node mongoclient example javascript node.js mongodb predicate

javascript - mongoclient - npm install mongodb nodejs



¿Qué biblioteca de Javascript puede evaluar los predicados de consulta tipo MongoDB en contra de un objeto? (5)

¿Hay una biblioteca de JavaScript que me permita expresar predicados de objetos en un DSL similar al lenguaje de consulta de MongoDB? En aras de la claridad en un programa grande, me gustaría poder decir:

var obj = { a: 1, b: ''abcdefg'' }, qry = { a: { $gt: 0 }, b: /^abc/ }; if(query(qry).matches(obj)) { // do something appropriate since }

en lugar de:

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

Estoy usando Node.js, así que cualquier cosa en NPM sería genial. Sería una ventaja adicional si la biblioteca puede seleccionar objetos de una matriz, así como solo hacer coincidir objetos individuales.

Revisé estas dos preguntas relacionadas, pero no fueron particularmente útiles para mi situación:


lodash.js

Quieres usar lodash.js. Es una caída en el reemplazo de underscore.js. El rendimiento es el doble de rápido.

Lodash


Echa un vistazo a Mingo

Lo implementé después de no encontrar una alternativa adecuada.

Todavía se está desarrollando activamente, pero es utilizable. La cobertura de la prueba no está completa.

Utilizable desde navegador y nodejs

[Editar]

Esta biblioteca es ahora la implementación más completa del lenguaje de consulta de MongoDB para la interfaz.


Lo más cercano que pude encontrar fue linq.js , que es LINQ para JavaScript. Esperemos que esto sea de alguna ayuda para usted.


OK he encontrado la respuesta: Sift.js

Ahora para la respuesta larga: Esto ha sido preguntado y contestado antes . Los puntos más destacados son:

  • Usa Sift si realmente quieres la sintaxis de Mongo
  • Si quieres ser más convencional, usa Underscore.js como todos los demás. Tiene un montón de funciones útiles además del hecho de que básicamente hace lo que tamiza hace con una sintaxis ligeramente diferente.
  • Es posible que no necesite ninguna biblioteca: los navegadores modernos admiten muchas funciones útiles directamente en el prototipo Array , como filter() por ejemplo.

Como nota final, mongodb-riff parece estar intentando hacer algo similar, pero en la actualidad la página indica claramente que no funciona, tal vez esté abandonada. Pero su readme es al menos de valor :-), menciona sift y Query Engine que parece más maduro, ¡aunque demasiado complicado para mí!

Personalmente, voy a usar Underscore porque ahora que lo he investigado por primera vez, me doy cuenta de que tiene un montón de cosas útiles que necesito, además de que solo quería hacer funciones simples como lo que sería _.find() en los guiones bajos. Pero supongo que si quieres hacer consultas más complicadas de tipo Mongo, lo harás en menos LOC con Sift.