【问题标题】:how to delete child entries while getting the matched parents using mongo shell如何在使用 mongo shell 获取匹配的父母时删除子条目
【发布时间】:2020-02-27 12:01:31
【问题描述】:

我正在使用 mongodb shell 命令,我可以使用db.collection.find(findQuery) 获取集合数据。

在我的示例中,我有 Books 和 Authors 表,它们之间存在多对多关联。

从书籍表中查看的示例数据是(此数据是从邮递员查看的),

{"authors": [
            {
                "id": "123",
                "name": "Sivakumar"
            },
            {
                "id": "124",
                "name": "Ram"
            }
        ],
        "id": "456",
        "title": "Believe Yourself"
}

我可以删除db.authors.remove({name:"Ram"}) 的作者条目。这会删除 Ram 条目,但我必须使用 shell 命令删除与书籍关联的所有作者条目。我没有找到任何有关在 shell 命令中填充的文档。如何在 mongo shell 命令中使用 find 和 populate 删除作者条目。

【问题讨论】:

  • 您需要迭代authors,删除书籍,然后删除作者,如下所示:db.authors.find({name:"Ram"}).forEach(function(doc){db.books.remove({book:book_id});db.authors.remove(doc);})

标签: mongodb mongodb-query sh mongoose-populate


【解决方案1】:

我不完全理解您的帖子/要求 - $unset 会从文档中删除一个字段。

您不能简单地将作者字段投影到任何结果中 - 因此就输出而言,它不存在并且不涉及任何实际删除。

您可以使用现有集合创建一个新集合,而只是不包​​括作者字段。

【讨论】:

  • 我想删除我在 mongodb 中的旧记录,在这里我必须找到与书籍关联的作者并删除这些作者,然后使用 shell 命令删除书籍
猜你喜欢
  • 1970-01-01
  • 2012-09-12
  • 2019-09-21
  • 2022-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多