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

Tìm sau khi điền cầy mangut

@Jason Cust đã giải thích nó khá tốt rồi - trong tình huống này, giải pháp tốt nhất là thay đổi lược đồ để ngăn Users truy vấn theo thuộc tính của tài liệu được lưu trữ trong bộ sưu tập riêng biệt.

Đây là giải pháp tốt nhất mà tôi có thể nghĩ ra mà sẽ không bắt buộc bạn làm điều đó (vì bạn đã nói trong bình luận rằng bạn không thể).

Users.find().populate({
  path: 'email',
  match: {
    type: 'Gmail'
  }
}).exec(function(err, users) {
  users = users.filter(function(user) {
    return user.email; // return only users with email matching 'type: "Gmail"' query
  });
});

Những gì chúng tôi đang làm ở đây là chỉ điền email s khớp với truy vấn bổ sung (match trong .populate() gọi) - nếu không thì email trường trong Users tài liệu sẽ được đặt thành null .

Tất cả những gì còn lại là .filter trên users được trả lại , giống như trong câu hỏi ban đầu của bạn - chỉ với việc kiểm tra đơn giản hơn, rất chung chung. Như bạn có thể thấy - email có hay không.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Trả lại hồ sơ mới nhất từ ​​subocument ở Mongodb

  2. Không có máy chủ nào được WlikeServerSelector chọn từ cụm

  3. tại sao lại sử dụng ORM với NoSql (như MongoDB)

  4. MongoDB không còn dung lượng trên thiết bị có docker

  5. C # MongoDB:Làm thế nào để ánh xạ chính xác một đối tượng miền?