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

Mongo Truy vấn một trường lồng nhau trong một mảng.

Bạn muốn sử dụng $elemMatch cho điều này.

{"genres": { "$elemMatch" :  {"name": "Shooter"} } }
// or
{"genres": { "$elemMatch" :  {"name": { "$in": ["Shooter"] } } } }

https://docs.mongodb.com/manual/reference/operator/ truy vấn / elemMatch /

Bạn cũng có thể sử dụng ký hiệu chấm mongodb và nó sẽ hoạt động khá giống bạn ngoại trừ:

{"genres.name": "Shooter"}
// or
{"genres.name": { "$in": ["Shooter"]}}

Mongodb biết cách diễn giải điều này trong trường hợp genres là một mảng. Chỉ cần lưu ý rằng truy vấn ký hiệu dấu chấm hơi mơ hồ, vì nó cũng sẽ khớp với name trong trường hợp genres tài sản không phải là một mảng. Ví dụ:tài liệu này sẽ khớp với:

{"genres": { "name": "Shooter" } }

Trong mọi trường hợp, bạn có thể lập chỉ mục cho name thuộc tính trong genres mảng và chỉ mục sẽ được sử dụng để tra cứu.

db.collection.createIndex({'genres.name': 1})

https://docs.mongodb.com/manual/reference/ bảng chú giải thuật ngữ / # thuật ngữ-dấu chấm-ký hiệu

https://docs.mongodb.com/manual/reference/operator/ truy vấn / trong /




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Làm cách nào để triển khai lược đồ này trong MongoDB?

  2. Bản đồ PHP MongoDB giảm lỗi xác nhận db

  3. cách triển khai hàm như kết nối trái của mysql trong mongoose

  4. Trình điều khiển Nodejs hỗ trợ những phương thức con trỏ tổng hợp nào?

  5. Truy vấn Mongo mất nhiều thời gian. Làm thế nào để làm cho nó nhanh hơn?