插入前检查MongoDB的唯一性

时间:2015-02-17 18:11:55

标签: c# mongodb

我有一个包含100万个唯一编号的MongoDB集合。

我有一个操作,我需要在集合中添加30,000个数字,但如果这些数字已经在集合中,我需要取消操作。

使用C#,想法#1是做这样的事情:

private void DoImport(List<long> numbersToImport)
    {
        // brings over 1 million records from the DB. Yikes!
        var numbersInDatabase = numberRepository.GetAll();

        // convert list into a more lookup-able format
        var numbersHash = new HashSet<long>(numbersInDatabase);

        // determine if any numbers are already in the database
        var duplicates = numbersToImport.Where(number => numbersHash.Contains(number)); 
        if (duplicates.Any()) {
            // abort processing - at least one input list element is already in the database            
        }
    }

但是,为了进行比较,引入500万个数字会有明显的性能和可扩展性问题。

由于我有一个唯一索引,想法#2是批量插入,如果新插入的集的计数与初始列表的计数不匹配,则删除所有新记录。我不喜欢这不是确定性的。在我进入数据库之前,似乎我应该更多地了解唯一性。

在添加到集合之前,是否有可扩展且有效的方法来检查集合的唯一性?

0 个答案:

没有答案