【问题标题】:Exception on temporary table - e11000 duplicate key error临时表异常 - e11000 重复键错误
【发布时间】:2021-05-06 00:27:43
【问题描述】:

致敬!长期阅读,第一次提问。希望我能清楚地提出问题。

我遇到了一些我无法理解 MongoDB 操作的行为。

当访问我们的一个端点时,我们最初遇到的问题是多次 MongoDB 异常警报。

命令聚合失败:插入 $out 失败:{ lastOp: { ts: Timestamp(1612204536, 11872), t: 45 }, connectionId: 101263, err: "E11000 duplicate key error collection: qt.tmp.agg_out. 7907 索引:id 复制密钥:{:“jLCJp53”}”,代码:11000,代码名称:“DuplicateKey”,n:0,ok:1.0,操作时间:时间戳(1612204536,11872),$ clusterTime: { clusterTime: Timestamp(1612204536, 11873), 签名: { hash: BinData(0, 0000000000000000000000000000000000000000), keyId: 0 } } }.

查看端点,它调用一个方法来获取请求集合,就像这样。我相信这个代码块中的 $out 会抛出异常:

        public IEnumerable<Request> GetRequests(string courseId, string quizId = "", string questionId = "")
    {
        string tempColName = "tempQTCol-GetRequests-" + DateTime.Now.ToString("MMddyyyyhhmmssfff") + "-" + courseId + "-" + H.GenerateUniqueId();
        var requests = GetCollection<Request>(CollectionName).Aggregate(new AggregateArgs
        {
            Pipeline = new[] {
               BsonDocument.Parse("{ $match: {   $and: [{ \"CourseId\": \"" + courseId
            + "\" }, { \"QuizId\": /.*" + quizId + ".*/i }, { \"QuestionId\": /.*" + questionId + ".*/i}] } }"),
               BsonDocument.Parse("{ $out : \""+tempColName+"\" }")
            }
        }).Select(s => BsonSerializer.Deserialize<Request>(s)).ToList();
        DropCollection(tempColName);
        return requests;
    }

我不知道这是否是有用的信息,但因此,由于错误是在 DropCollection 之前引发的,我相信临时集合正在我们的数据库上创建并且永远不会被丢弃。

temporary database creation

在应用程序洞察中,有日志记录尝试发布到端点,它会抛出一个 500 错误,并带有我在上面发布的 MongoDB 异常。

提前感谢您的时间和考虑。我对 mongo 不是很熟悉,但我会尽力提供任何需要的信息。

【问题讨论】:

    标签: c# .net mongodb


    【解决方案1】:

    您有 id dup 键:{ : "jLCJp53" }" ,您可能需要在每次插入文档之前删除临时集合,或者您需要允许自动生成 _id 键(默认情况下自动生成每个进程生成的 mongodb _id 键是唯一的)

    【讨论】:

      猜你喜欢
      • 2017-02-20
      • 2017-08-27
      • 2018-10-12
      • 1970-01-01
      • 1970-01-01
      • 2017-03-02
      • 2019-05-03
      • 1970-01-01
      • 2019-07-11
      相关资源
      最近更新 更多