MongoDB находит, сопоставляя два объединенных поля?

У меня есть коллекция MongoDB с полями firstName и lastName, мне нужно получить элементы, соответствующие определенным полным именам:

Есть ли простой способ написать запрос, который бы проверял, что:

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

--- РЕДАКТИРОВАТЬ ---

Причина конкатенации заключается в том, что я не хочу выставлять счета за работу в результате (учитывая, что она существует), если у меня есть [bill, steve] для firstNames и [gates, jobs] для фамилии.

Спасибо!


person Olivier    schedule 20.02.2012    source источник
comment
Ваш ввод представляет собой массив имен и массив фамилий? И вы объединяете их по положению в массиве? Если да, я обновлю свой ответ, но это все еще то, что вы должны делать со своим вводом, а не в MongoDb.   -  person michaeltwofish    schedule 02.03.2012


Ответы (2)


Наверняка вы просто хотите:

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

или есть конкретная причина для фактического объединения?

person Rich    schedule 20.02.2012
comment
Причина объединения заключается в том, что я не хочу, чтобы в результате выставлялись счета за работу (учитывая, что она существует), если у меня есть [билль, Стив] для имен и [ворота, задания] для фамилии. - person Olivier; 01.03.2012

Похоже, у вас есть конкатенированные поля в качестве входных данных. Если это так, вам было бы гораздо лучше разделить входные данные на любом языке, который вы используете, и передать отдельные поля в MongoDB.

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

Это также позволит MongoDB использовать индекс, если он определен.

person michaeltwofish    schedule 20.02.2012
comment
У меня нет объединенных полей в качестве входных данных, я обновил q, чтобы сделать его более понятным. - person Olivier; 01.03.2012