Chúng tôi có thể thực hiện việc này bằng cách sử dụng $ nin
hãy để chúng tôi có bộ sưu tập Công ty với 3 bản ghi
db.companies.find();
{"_id":1, "name":"ABC Pvt Ltd", "Address":"Chennai, India"}
{"_id":2, "name":"XYZ Pvt Ltd", "Address":"Mumbai, India"}
{"_id":3, "name":"LMN Pvt Ltd", "Address":"Delhi, India"}
Hãy để chúng tôi có bộ sưu tập nhân viên với 3 thuộc tính recordcompany trong bộ sưu tập nhân viên đề cập đến id tài liệu của bộ sưu tập công ty, để kiểm tra, chúng tôi có nhân viên cho công ty 1 và 2.
db.employees.find();
{"_id":1, "firstname":"X", "lastname":"Y", "company":1}
{"_id":2, "firstname":"A", "lastname":"B", "company":1}
{"_id":2, "firstname":"Z", "lastname":"A", "company":2}
Trước khi loại bỏ các công ty không có nhân viên nào, trước tiên chúng ta cần tìm các Công ty có nhân viên. Để tránh nhiều mục nhập, chúng tôi sử dụng khác biệt
db.employees.distinct("company")
[ 1, 2 ]
bây giờ chúng tôi đã sử dụng $ nin với các công ty riêng biệt có nhân viên để xóa các công ty không có nhân viên
db.companies.remove({"_id":{$nin : db.employees.distinct("company")}});
Bây giờ nếu chúng tôi thực hiện truy vấn tìm kiếm trên bộ sưu tập công ty, chúng tôi sẽ chỉ nhận được hai bản ghi.
db.companies.find();
{ "_id" : 1, "name" : "ABC Pvt Ltd", "Address" : "Chennai, India" }
{ "_id" : 2, "name" : "XYZ Pvt Ltd", "Address" : "Mumbai, India" }
công ty 3 bị xóa vì không có nhân viên
Hy vọng nó sẽ giúp!