我有一个mongo数据库和其中的几个集合。我想从集合中移除匹配的所有匹配,比如target_id。诀窍是,我还必须删除与“target_id”匹配的条目“已连接”。查询MongoDB查询结果
例如
DB
Culture (_id, owner_id)
Document (_id, target_id)
Entity (_id, target_id)
Field (_id, entity_id)
Form (_id, target_id)
Question (_id, form_id)
Layout (_id, question_id)
现在,我可以通过
db.Document.remove({"_id": ObjectId(target_id)});
所以第一个棘手的部分easilily删除所有文件,是在文化收集一些条目可能有owner_id = DOCUMENT_ID。所以在我删除实体条目之前,我还必须删除文化条目。
第二个问题是我无法直接访问字段集合中的target_id条目,因为这些字段可以通过entity_id找到。
所以我想编写一个脚本/查询从mongo shell提供的target_id运行,然后删除所有直接或间接被target_id“引用”的条目。我没有经历过简单的查找/删除id,所以这个查询被卡住了。
据我了解,我可以一步做到这一步,再说,先找到所有的实体:
db.Entity.find({ "$where" : "{"target_id" : ObjectId(target_id)}" });
第二步是去除已经从查询owner_id每一个实体的=实体ID的所有文化以上。我该如何运行
db.Culture.find({ "$where" : "{"owner_id" : ObjectId(entity_id)}" });
其中entity_id遍历所有实体的第一个查询?
似乎你的数据是关系型的... mongo不是这种东西的好选择。 – tanaydin 2013-04-10 13:14:25