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

lấy bản ghi với ít nhất một đối tượng được liên kết

Vấn đề của bạn là has_many của Mongoid không để lại bất kỳ thứ gì trong tài liệu mẹ nên không có truy vấn nào trên tài liệu mẹ sẽ làm bất cứ điều gì hữu ích cho bạn. Tuy nhiên, belongs_to :user trong Task của bạn sẽ thêm một :user_id trường tasks thu thập. Điều đó để lại cho bạn những điều khủng khiếp như thế này:

user_ids = Task.all.distinct(:user_id)
users    = User.where(:id => user_ids).limit(10)

Tất nhiên, nếu bạn có embeds_many :tasks thay vì has_many :tasks thì bạn có thể truy vấn :tasks bên trong users bộ sưu tập như bạn muốn. OTOH, điều này có thể sẽ phá vỡ những thứ khác.

Nếu bạn cần giữ các tác vụ riêng biệt (tức là không được nhúng) thì bạn có thể thiết lập bộ đếm trong User để theo dõi số lượng nhiệm vụ và sau đó bạn có thể nói những điều như:

User.where(:num_tasks.gt => 0).limit(10)


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Đọc và hiển thị hình ảnh từ mongoDB bằng GridFs

  2. Nestjs:Lược đồ đúng cho mảng tài liệu con trong mongoose (không có _id mặc định hoặc xác định lại ObjectId)

  3. cập nhật nhiều phần tử trong mongodb mảng

  4. Cách thay thế tài liệu hiện có khi nhập tệp vào MongoDB

  5. mongodb tìm theo nhiều mục mảng