У меня есть две коллекции в Монго:Как удалить документы со сломанной ссылкой в 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"
}
магазин пользователя ссылку на ID органа через ObjectId.
Теперь моя проблема: несколько органов были удалены и больше не находятся в коллекции. Мне нужно найти способ, как выполнить итерацию через коллекцию «user» и удалить их, если их полномочия_ид указывают на удаленные полномочия.
Я попытался это:
db.user.find(
{
$where: function() {
db.authority.find({ _id: this.authority_id }).count() == 0
}
})
но "дб" не доступен здесь. Возможно ли реализовать контрольную проверку внутри итерации?
Могу ли я использовать $ нин и переменная эмулировать: 'удалить из пользователей, где не authority_id в (выберите идентификатор из власти)' – romaninsh