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

Cập nhật và tìm kiếm cấu trúc nhúng Mongodb?

  1. Lỗi cú pháp là do bạn phải sử dụng dấu ngoặc kép xung quanh services.port_info
  2. Tuy nhiên, $elemMatch trong các trường lồng nhau hiện không được hỗ trợ dù sao thì
  3. May mắn thay, bạn không cần $elemMatch cho loại truy vấn này

Điều này nên làm:

db.hosts.find({ ip : "127.0.0.1"}, { "services.port_info.product" : "ssh" });

$elemMatch là bắt buộc nếu bạn muốn so khớp nhiều tiêu chí bên trong đối tượng mảng, ví dụ:"tìm tất cả nơi có cổng là 9000 và giao thức là UDP". Điều đó sẽ không được hỗ trợ với cấu trúc dữ liệu của bạn. Tôi không chắc tại sao port_info là một mảng các đối tượng (có thể đối với các vị trí không chắc chắn trong đó một cổng có thể thuộc về hai dịch vụ khác nhau?) - nếu đó là một đối tượng, ngay cả $elemMatch sẽ được hỗ trợ.

Ngoài ra, hãy nhớ rằng một truy vấn như vậy sẽ luôn trả về toàn bộ đối tượng.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Tính điểm từ một trường hiện có với các điều kiện

  2. MongoDB trong Go với mgo, các toán tử với bson.M / bson.D luôn gặp lỗi cú pháp

  3. Ứng dụng nút không phản hồi sau một khoảng thời gian nhất định

  4. Nâng cấp từ điển trong MongoDb

  5. Hướng dẫn kiến ​​thức cơ bản về MongoDB