MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Chọn bản ghi phù hợp với giá trị concat của hai trường trong mongodb

Bạn chỉ có thể làm điều đó với khung tổng hợp, không phải với tính năng tìm kiếm thông thường.

db.coll.aggregate({$project:{newField:{$concat:["$field1","$field2"]}}},
                  {$match:{newField:"value"}} 
);

Lưu ý rằng điều này sẽ không thể sử dụng bất kỳ chỉ mục nào, vì không có hỗ trợ cho các chỉ mục trên các giá trị được tính toán trong MongoDB (chưa).

Nếu bạn có chỉ mục trên field1 và bạn biết có bao nhiêu ký tự bạn mong muốn field1 đóng góp vào giá trị value bạn có thể cải thiện hiệu suất của tập hợp này như thế này:

db.coll.aggregate({$match:{field1:/^val/}},
                  {$project:{newField:{$concat:["$field1","$field2"]}}},
                  {$match:{newField:"value"}} 
);

ở đâu val là phần đầu tiên của chuỗi "giá trị" (bạn không được so sánh nhiều ký tự hơn giá trị ngắn nhất có thể có của field1 mặc dù.

CHỈNH SỬA kể từ phiên bản 3.6, bạn có thể thực hiện việc này bằng cách sử dụng $expr biểu thức:

db.coll.find({$expr:{$eq:["value", {$concat:["$field1", "$field2"]}]}})


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Toán tử truy vấn MongoDB $ type

  2. Khởi tạo dữ liệu trên mongo dày đặc

  3. Làm việc với các ký tự đặc biệt trong bộ sưu tập Mongo

  4. Làm cách nào để kết nối với MongoDB Atlas bằng Robomongo?

  5. MongoDB $ dateToParts