2012-02-20 8 views
7

Mam kolekcję MongoDB, który ma pola firstName & Nazwisko, muszę odzyskać elementy, które pasuje do konkretnych fullNames:MongoDB znaleźć, dopasowując dwa połączone ze sobą pola?

Czy istnieje prosty sposób napisać kwerendę, która będzie sprawdzić, czy:

firstName + " " + lastName IN ARRAY()... ? 

- - EDYTUJ ---

Powodem konkatenacji jest to, że nie chcę, aby prace związane z rachunkiem w wyniku (biorąc pod uwagę, że istnieje), jeśli mam [rachunek, steve] dla firstNames & [bramy, oferty pracy] na nazwisko.

Dzięki!

+0

Twoje dane wejściowe są tablicą firstNames i tablicą lastNames? A ty dołączasz do nich według pozycji w tablicy? Jeśli tak, będę aktualizować moją odpowiedź, ale jest to * nadal * coś, co powinieneś robić z danymi wejściowymi, a nie z MongoDb. – michaeltwofish

Odpowiedz

1

Na pewno chcesz po prostu:

db.myCollection.find({firstName:"bill",lastName:"gates"}) 

czy jest jakiś szczególny powód, aby właściwie łączyć?

+0

Powodem konkatenacji jest to, że nie chcę, aby prace związane z rachunkiem w wyniku (biorąc pod uwagę, że istnieje), jeśli mam [rachunek, steve] dla firstNames i [gate, jobs] dla lastname. – Olivier

1

Wygląda na to, że jako dane wejściowe są połączone pola. W takim przypadku znacznie lepiej byłoby podzielić dane wejściowe w języku, którego używasz, i przekazywać oddzielne pola do MongoDB.

var names = "bill gates".split(); 
db.myCollection.find({firstName:names[0],lastName:names[1]}); 

Pozwoli to również MongoDB użyć indeksu, jeśli jest zdefiniowany.

+0

Nie mam połączonych pól jako danych wejściowych, zaktualizowałem q, aby było bardziej zrozumiałe. – Olivier

Powiązane problemy