抱歉,已经回答了很多类似的问题,但我仍然无法从这些问题中解决我的问题。我有两个集合形状和几何。我已成功查询形状以删除所有红色形状
myquery = {"Colour": "Red"}
x = collection.delete_many(myquery)
但我想在共享公共字段“名称”的几何集合上使用此查询的结果,以便我从几何中删除任何文档,该几何具有在原始查询中找到的名称(红色形状)< /p>
形状示例
_id: "123"
Colour: "red"
Shape: "square"
Name: "xyz123"
Line: "bold"
几何示例
_id: "456"
Height: "6"
Width: "6"
Name: "xyz123"
Area: "36"
非常感谢
答案 0 :(得分:0)
我不知道 pymongo,但在 mongo shell 中,它会像这样:
var namesToDelete = db.shapes.distinct("Name", { Color: "Red" });
db.geometries.deleteMany({ Name: { $in: namesToDelete }});
db.shapes.deleteMany({ Color: "Red" });
免责声明:代码“按原样”提供。请在生产前仔细测试! ;)
答案 1 :(得分:0)
pymongo 中的类似解决方案。基本上,您必须在删除 shapes
记录之前获得相应名称的详细信息,因为一旦删除它,它就消失了!
myquery = {'Colour': 'red'}
for shape in db.shapes.find(myquery):
name = shape.get('Name')
if name is not None:
db.geometry.delete_many({'Name': name})
db.shapes.delete_many(myquery)