Есть ли способ использовать объекты запросов MongoDB для фильтрации обычных массивов JavaScript? - PullRequest
9 голосов
/ 02 января 2012

В MongoDB вы можете использовать объекты в стиле JSON, например, для запроса к коллекции:

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

Я бы хотел использовать этот бит { x : { $ne : 3 }, y : 'foo' } и использовать его для фильтрации массива объектов JavaScript.

Есть ли какой-нибудь код / ​​библиотека, которая может это сделать и которая поддерживает все параметры запроса (или все равно, что имеет смысл в любом случае)?

Ответы [ 5 ]

8 голосов
/ 05 января 2012

Хорошо, вот еще одна попытка:

sift.js (npm: sift) Крэйга Кондона - библиотека фильтрации массивов, вдохновленная MongoDB.Это немного похоже на альтернативу Underscore для людей, которые любят MongoDB.Sift.js поддерживает такие операторы, как $ in и $ gt, но также может фильтровать массивы на основе функций и даже работает с глубоко вложенными объектами в массивах.

Крейг предоставил несколько примеров, которые должны казаться знакомыми пользователям Mongo.:

var sift = require('sift');

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

Источник: http://dailyjs.com/2012/01/04/node-roundup/

3 голосов
/ 08 февраля 2017

Насколько я вижу, Mingo имеет более широкую поддержку запросов Mongo, чем Sift.

2 голосов
/ 02 января 2012

Underscore.js - отличная библиотека для отображения / сокращения видов работ в структурах javascript.Настоятельно рекомендуется.

1 голос
/ 12 октября 2014

Вы можете использовать библиотеку https://github.com/mirek/node-json-criteria, которая оценивает запросы critera в формате MongoDB для объектов JSON.

1 голос
/ 03 января 2012

Я не думаю, что вы можете просто использовать фильтры mongodb в обычных массивах js. Потому что вам нужно понять тот факт, что

Фильтры, указанные в mongodb, оцениваются в индексы mongodb отсутствуют в наборе результатов javascript

Означает фильтры, оцененные (переведенные) для запроса по индексу, а не по js. Итак, что вы спрашиваете - это DSL поверх mongodb (или JS), который будет оценивать фильтры индекса mongodb в массиве JS.

Я не думаю, что это необходимо, поскольку оба служат разным целям (хотя возможно (сложно) написать собственный DSL). Также есть основные фреймворки, такие как underscore.js, которые уже предоставляют способы их обработки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...