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

Mảng lọc MongoDb

Nếu bạn chỉ lọc một phần tử trong một mảng, ngay cả khi chỉ một phần tử khớp, toàn bộ mảng sẽ được trả về và không có gì sẽ được trả về nếu không có phần tử trùng khớp. Do đó, bạn cần tách mảng của mình thành các tài liệu khác nhau bằng cách sử dụng $unwind và chỉ sau nó, cố gắng lọc kết quả bằng cách sử dụng $match .

Truy vấn sau có thể giải quyết vấn đề của bạn :

db.collection.aggregate([
  {"$unwind": "$product"},
  {"$match": {"product.name": "FirstWarehouseName1"}} // replace here with the name you want
])

Làm việc mongoplayground

Nếu tôi có thể, chỉ là một mẹo :Bạn nên lưu trữ mỗi sản phẩm trong một tài liệu khác nhau, mặc dù MongoDB không có phân vùng và cho phép chúng tôi có hầu hết mọi định dạng tài liệu, hãy nhớ rằng mỗi tài liệu phải chứa tương đương với một hàng thông tin trong cơ sở dữ liệu quan hệ thông thường. Nếu không, bạn sẽ bắt đầu gặp những vấn đề này và thêm vào đó là các vấn đề về hiệu suất.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. làm thế nào để chuyển một biến cho một regex

  2. cách chuyển đổi chuỗi thành giá trị số trong mongodb

  3. cách chèn tài liệu nhúng bằng cách sử dụng dữ liệu mùa xuân mongodb mongotemplate

  4. Làm cách nào để thêm người dùng quản trị vào Mongo trong phiên bản 2.6?

  5. Ruby / rails:mongoid với mongo (đá quý); một cuộc xung đột bson? Làm thế nào để xử lý các phiên bản khác nhau?