MongoDB使用ensureIndex删除重复项,但保留最后一个条目而不是第一个条目

ek

我有一个重复的问题。

我正在尝试从MongoDB集合中删除所有重复项,问题是我不想保留第一个条目,而是最后一个条目。

这就是我保留第一个条目的方式:

db.CUDB.ensureIndex( { CUid: 1 }, { unique: true, dropDups: true } )

但是我希望能够以相反的方式确保索引并保持最后添加的条目而不是第一个。

最简单的方法是什么?

萨尔瓦多·达利

sureIndex没有提供执行此操作的方法。同样,它也没有告诉您将删除哪些值。

在您的情况下,我将尝试执行以下操作(这肯定会比确保索引慢一些)。我还created_at基于您决定一个文档是否比另一个文档更旧的假设您有一个字段(在我的情况下):

var checked = {}; // basically a hash, which ensures O(1) lookup
db.coll.find().sort({created_at: -1}).forEach(function(o){
  if (o['CUid'] in checked){
    db.coll.remove({_id: o['_id']});
  } else {
    checked[o['CUid']] = 1;
  }
})

因此,基本上,我们以相反的顺序迭代所有文档(最新的是第一个),并检查我们是否已经看到您的CUid字段。如果没有,请将该文档保留为原样并将其标记为可见。如果以后再看到其他任何相同的文档CUid,则可以将其删除。

最后,您将对集合进行完整扫描,N并对每个重复的元素进行额外的数据库调用。

反向排序将确保将保存最新的元素。

聚苯乙烯

当心上面代码中的错误;我只是证明它是正确的,没有尝试过。

告诉我怎么回事。

PPS如果您仍然无法在mongo中对所有集合进行排序,我会尝试在应用程序层上进行。基本上,您会找到所有集合,使用所需的任何语言对它们进行排序,然后在其中执行相同的逻辑。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

删除重复项,保留最后一个条目-优化

来自分类Dev

删除重复的条目并保留最后一个

来自分类Dev

SQL 删除重复项但仍保留第一个

来自分类Dev

如何从分组数据的最后一个条目中减去第一个条目

来自分类Dev

C# 删除重复条目并将删除条目的值与第一个条目相加

来自分类Dev

使用.GroupBy删除列表重复项,并保留第一个列表的值

来自分类Dev

使用.GroupBy删除列表重复项,并保留第一个列表中的值

来自分类Dev

测试当前条目是CollectionViewSource中的第一个条目还是最后一个条目

来自分类Dev

如果 id 列不可用,则删除重复条目,每个条目保留一个条目

来自分类Dev

根据第一个值的时间戳删除MySQL重复条目行

来自分类Dev

Mongo db Collection查找从第一个条目返回的结果,而不是从客户端的最后一个条目返回的结果

来自分类Dev

Pandas DataFrame 删除重复项,保留第一个“x”次出现

来自分类Dev

Python feedparser返回第一个条目中第一个媒体项的URL

来自分类Dev

在JavaScript中,是否可以仅使用.filter()删除重复项(第一个实例是保留的实例)?

来自分类Dev

在一行中查找具有特定值的第一个和最后一个条目

来自分类Dev

从列表的第 i 个条目中删除第一个 ki 元素

来自分类Dev

条目和最后一个条目之前的条目

来自分类Dev

在SQL Server中按用户获取表中的第一个和最后一个条目

来自分类Dev

计算给定时间段内第一个和最后一个条目相等

来自分类Dev

PHP:获取数组中的第一个和最后一个元素条目及其键

来自分类Dev

获取给定时间跨度的第一个和最后一个条目

来自分类Dev

字符串拆分的第一个条目

来自分类Dev

Django:ModelFormSet仅保存第一个条目

来自分类Dev

用第一个条目填充Combox

来自分类Dev

Foreach循环不显示第一个条目

来自分类Dev

PHP而命令缺少第一个条目

来自分类Dev

使用“ sed”仅替换第一个和最后一个匹配项

来自分类Dev

在熊猫数据框中查找第一个重复的连续条目

来自分类Dev

TYPO3列表模块CSV导出:第一个条目重复

Related 相关文章

  1. 1

    删除重复项,保留最后一个条目-优化

  2. 2

    删除重复的条目并保留最后一个

  3. 3

    SQL 删除重复项但仍保留第一个

  4. 4

    如何从分组数据的最后一个条目中减去第一个条目

  5. 5

    C# 删除重复条目并将删除条目的值与第一个条目相加

  6. 6

    使用.GroupBy删除列表重复项,并保留第一个列表的值

  7. 7

    使用.GroupBy删除列表重复项,并保留第一个列表中的值

  8. 8

    测试当前条目是CollectionViewSource中的第一个条目还是最后一个条目

  9. 9

    如果 id 列不可用,则删除重复条目,每个条目保留一个条目

  10. 10

    根据第一个值的时间戳删除MySQL重复条目行

  11. 11

    Mongo db Collection查找从第一个条目返回的结果,而不是从客户端的最后一个条目返回的结果

  12. 12

    Pandas DataFrame 删除重复项,保留第一个“x”次出现

  13. 13

    Python feedparser返回第一个条目中第一个媒体项的URL

  14. 14

    在JavaScript中,是否可以仅使用.filter()删除重复项(第一个实例是保留的实例)?

  15. 15

    在一行中查找具有特定值的第一个和最后一个条目

  16. 16

    从列表的第 i 个条目中删除第一个 ki 元素

  17. 17

    条目和最后一个条目之前的条目

  18. 18

    在SQL Server中按用户获取表中的第一个和最后一个条目

  19. 19

    计算给定时间段内第一个和最后一个条目相等

  20. 20

    PHP:获取数组中的第一个和最后一个元素条目及其键

  21. 21

    获取给定时间跨度的第一个和最后一个条目

  22. 22

    字符串拆分的第一个条目

  23. 23

    Django:ModelFormSet仅保存第一个条目

  24. 24

    用第一个条目填充Combox

  25. 25

    Foreach循环不显示第一个条目

  26. 26

    PHP而命令缺少第一个条目

  27. 27

    使用“ sed”仅替换第一个和最后一个匹配项

  28. 28

    在熊猫数据框中查找第一个重复的连续条目

  29. 29

    TYPO3列表模块CSV导出:第一个条目重复

热门标签

归档