从一个集合中删除与另一个集合MongoDB不匹配的文档

时间:2020-05-13 15:02:35

标签: mongodb

我有问题。在我的一个收藏夹中,我积累了超过300万个文档,因为没有实现通过任何关系删除另一个文档的方法来删除一个文档。

问题是我想删除不匹配的文档。我不知道该怎么做...我不知道如何写不匹配的!=。在这种情况下,我想从Cars ddbb中删除Toyota和BMW,因为与Drivers集合不匹配。

收藏1将ddbb放到我拥有超过300万个文档的地方:

{
_id: ObjectId("5d1c7f8fa9a13d7023a64fe7"),
car: "Toyota",
color: "blue"
}
{
_id: ObjectId("5d1c817aa9a13dd106a64fe9"),
car: "Hyundai",
color: "white"
}

{
_id: ObjectId("5d1d02e0a9a13d0076a64ff7"),
car: "BMW ",
color: "red"
}


集合2驱动程序:

{
_id: ObjectId("5d1c8084a9a13d5464a64fe8"),
age: 25,
carModel: "Mercedes"
}

{
_id: ObjectId("5d1c8648a9a13de345a64fee"),
age: 32,
carModel: "Hyundai"
}

我在想这样的事情:


public deleteNotMatchingDocuments(): Promise<void> {
        return new Promise((resolve, reject) => {
            Drivers.find().then((doc: any) => {
                doc.forEach((doc: any) => {
                    Cars.deleteMany({ car =! doc.carModel } }).then(() => {//no idea how to write this
                        if (doc) {
                            resolve(doc);
                        } else {
                            reject("field not found");
                        }
                    }).catch((err: any) => {
                        console.error(err);
                        reject("database Error");
                    });
                });
            })
        });
    }

0 个答案:

没有答案