1

我正在尝试删除跨集合的 mongodb 中的孤立文档。在集合“值”中,我有这样的文件:

value:
{
   resultId: <ObjectId>
   ...other data..
}

集合“结果”中的哪些参考文档:

result:
{
   _id: <ObjectId> //the resultId
}

许多“结果”文件已被删除,导致“有价值”文件成为孤儿。如何找到所有孤儿并删除它们?

4

1 回答 1

1

您要做的是建立一个聚合管道并使用$lookup运算符来获取相应的结果文档。然后,将一个$match运算符添加到您的聚合管道以过滤那些没有相应结果对象的运算符。

db.values.aggregate([
  {
    $lookup: {
      from: "results",
      localField: "resultId",
      foreignField: "id",
      as: "resultDocument"
    }
   },
   { $match: { resultDocument: null }}
])

这样,您就可以识别出孤立的文档,然后可以将其删除。

于 2020-11-26T16:01:11.360 回答