gpt4 book ai didi

mongodb - 如何从子集合中删除列

转载 作者:IT老高 更新时间:2023-10-28 13:10:25 24 4
gpt4 key购买 nike

我在 MongoDB 中有一个名为 CrawlUser 的集合。它有一个名为 CrawlStatus 的列表,它是 CrawlStatus 对象的列表。 CrawlStatus 有一个名为 LastErrorMessage 的属性,我想从集合中删除它。

我尝试执行以下操作将其删除,但没有成功...没有给出错误消息,但 LastErrorMessage 列仍然存在。

db.CrawlUser.update( {}, { $unset: { "CrawlStatuses.LastErrorMessage": 1 } }, false, true);

任何想法我做错了什么?

另一个相关问题,如果我对一个非常大的集合(数百万行)中的列执行 $unset 命令,mongodb 会用完服务器上的所有内存(好像它试图存储整个内存中的集合),然后服务器崩溃。当您拥有大量集合时,有没有更好的方法来删除列?

最佳答案

使用空参数的更新似乎不起作用。我在 mongo shell 和 mongoconsole 中尝试过。在 mongoconsole 中,它给出了一个关于更新期望第一个参数是数组或对象的错误。

但是,您可以使用 $exists 查找查询来执行相同的操作。

试试:

`db.CrawlUser.update( {CrawlStatuses:{$exists:true}}, { $unset: { "CrawlStatuses.LastErrorMessage": 1 } }, false, true);`

这对我有用。

请记住,根据文档,$exists 不使用索引,因此它会更慢。我建议添加一个参数,您可以在其上添加索引并在执行 $unset 时对其进行查询。

关于mongodb - 如何从子集合中删除列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4987289/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com