我有一個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