これは、 $nin を使用して実行できます。
3つのレコードを持つCompaniesコレクションを作成しましょう
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"}
従業員コレクションに3つのrecordscompany属性を持つemployeesコレクションを作成して、会社コレクションのドキュメントIDを参照し、会社1と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}
従業員のいない会社を削除する前に、まず従業員のいる会社を見つける必要があります。複数のエントリを回避するには、distinct を使用します。
db.employees.distinct("company")
[ 1, 2 ]
現在、従業員がいる別の会社で$ ninを使用して、従業員がいない会社を削除しています
db.companies.remove({"_id":{$nin : db.employees.distinct("company")}});
ここで、companysコレクションに対してfindクエリを実行すると、2つのレコードのみが取得されます。
db.companies.find();
{ "_id" : 1, "name" : "ABC Pvt Ltd", "Address" : "Chennai, India" }
{ "_id" : 2, "name" : "XYZ Pvt Ltd", "Address" : "Mumbai, India" }
会社3には従業員がいないため、削除されました
お役に立てば幸いです!