我在蒙戈兩個集合:如何在MongoDB中刪除具有破壞引用的文檔?
db.user.find():
{
"_id": { "$oid" : "52db05e6a2cb2f36afd63c47" },
"name": "John",
"authority_id": { "$oid" : "52daf174a2cb2f62aed63af3" },
}
{
"_id": { "$oid" : "52db05e6a2cb2f36afd63d00" },
"name": "Joe",
"authority_id": { "$oid" : "52daf174a2cb2f62aed63af3" },
}
和
db.authority.find():
{
"_id": { "$oid" : "52daf174a2cb2f62aed63af3" },
"name": "Sample Authority"
}
用戶存儲參考通過的ObjectId權威的ID。
現在我的問題:幾個權限已被刪除,不再在集合中。我需要找到一種方法,如果它們的authority_id指向已刪除的權限,則如何遍歷「user」集合並刪除它們。
我已經試過這樣:
db.user.find(
{
$where: function() {
db.authority.find({ _id: this.authority_id }).count() == 0
}
})
但 「DB」 是無法訪問那裏。是否有可能在迭代內部實現引用檢查?
我可以用$寧和可變效仿:'從用戶刪除不authority_id不在(選擇授權ID)' – romaninsh