【发布时间】:2014-02-08 07:06:36
【问题描述】:
我在 Mongo 有两个集合:
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 指向已删除的权限,我需要找到一种方法来遍历“用户”集合并删除它们。
我试过这个:
db.user.find(
{
$where: function() {
db.authority.find({ _id: this.authority_id }).count() == 0
}
})
但那里无法访问“db”。是否可以在迭代中实现引用检查?
【问题讨论】:
-
我可以使用 $nin 和一个变量来模拟:
delete from user where authority_id not in (select id from authority)
标签: mongodb