2015-12-03 2 views
6

W Mongo mogę skonstruować zapytanie, jak poniżej, aby zwrócić obiekty o wysokości nie równej 4 z kolekcji.Używaj składni w stylu mongo w celu wysyłania zapytań do obiektów JavaScript w pamięci z tablic zamiast kolekcji Mongo?

var mongoQuery = { height: { "$ne": 4 } }; 

Ale że mam tablicę w pamięci obiektów i chcemy odpytać z nich w ten sam sposób:

var myArr = [{height: 5}, {height: 4}, {height:3}] 

czy są jakieś istniejące biblioteki lub sposoby na mnie użyć podobną składnię na macierzach zamiast kolekcji mongo? Np .:

var result = someUtil(myArr, {height: {"$ne": 4}}); //returns all objects with height != 4 

EDIT: Nie chcę robić != 4, ale raczej ogólnie przetłumaczyć od dowolnego operatora Mongo (np $eq, $ge, etc.)

+0

Innymi słowy, chcesz używać składni w stylu mongo do sprawdzania poprawności obiektów JS w pamięci zamiast w API mongo? – y3sh

+0

Tak. Dokładnie to chcę zrobić. – aspin

+0

Nie jestem pewien, czy tego właśnie chcesz, ale możesz użyć funkcji filtru, aby to zrobić: var filters = myArr.filter (function (x) {return x.height! = 4;}); – jsfviky

Odpowiedz

1

Checkout underscore biblioteka.

var result = _.find(myArr, function(item){ return item.height == 4 });

+0

Nie chcę robić tylko 'item.height == 4' chociaż, ale szukam czegoś, aby przekonwertować Mongo' $ ne1' – aspin

+0

Możesz użyć zmiennych, item [fieldname] == value – AlexD

3

Proszę spojrzeć na sift.js. To jest to czego chcesz. Ale użyj go, jeśli naprawdę potrzebujesz zapytań typu mongodb, w przeciwnym razie użyj innej biblioteki, takiej jak lodash lub podkreślenia.