2012-02-20 32 views
7

Tôi có một bộ sưu tập MongoDB có các trường firstName & lastName, tôi cần phải lấy vật phẩm phù hợp fullNames cụ thể:MongoDB tìm bằng cách khớp hai trường được ghép nối?

Có một cách dễ dàng để viết một truy vấn mà sẽ kiểm tra xem:

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

- - EDIT ---

Lý do kết nối là tôi không muốn công việc hóa đơn trong kết quả (xem xét nó tồn tại) nếu tôi có [bill, steve] cho firstNames & [cổng, công việc] cho họ.

Cảm ơn!

+0

Thông tin nhập của bạn là một mảng các firstNames và một mảng lastNames? Và bạn tham gia cùng họ theo vị trí trong mảng? Nếu có, tôi sẽ cập nhật câu trả lời của tôi, nhưng đây là * vẫn * một cái gì đó bạn nên làm với đầu vào của bạn, không phải trong MongoDb. – michaeltwofish

Trả lời

1

Chắc chắn bạn chỉ muốn:

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

hoặc là có một lý do cụ thể để thực sự tiếp nhau?

+0

Lý do để ghép nối là tôi không muốn công việc hóa đơn trong kết quả (xem xét nó tồn tại) nếu tôi có [bill, steve] cho firstNames và [cổng, jobs] cho họ. – Olivier

1

Có vẻ như bạn có các trường được nối làm đầu vào của bạn. Nếu đúng như vậy, bạn nên chia nhỏ dữ liệu đầu vào của mình bằng bất kỳ ngôn ngữ nào bạn đang sử dụng và chuyển các trường riêng biệt sang MongoDB.

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

Điều này cũng sẽ cho phép MongoDB sử dụng chỉ mục nếu được xác định.

+0

Tôi không có các trường được nối làm đầu vào của mình, đã cập nhật q để làm cho nó rõ ràng hơn. – Olivier

Các vấn đề liên quan