gpt4 book ai didi

node.js - MongoDB NodeJS 驱动程序 : Duplicate key `E11000` extract index name

转载 作者:可可西里 更新时间:2023-11-01 10:40:25 25 4
gpt4 key购买 nike

在使用 MongoDB NodeJS 驱动程序(甚至 mongoose)时,插入新文档时,可能会返回一个 E11000 错误,表明发生了重复键冲突。

如果我要插入的集合有多个唯一索引并且我想确定其中一个被命中(例如,通知用户他的用户名和/或电子邮件已被占用)怎么办?

这是插入具有冲突索引的文档后引发的错误:

{
"name": "MongoError",
"message": "E11000 duplicate key error index: db.users.$_id_ dup key: { : \"blucell\" }",
"driver": true,
"index": 0,
"code": 11000,
"errmsg": "E11000 duplicate key error index: db.users.$_id_ dup key: { : \"blucell\" }"
}

导致问题的索引的唯一概念是在消息中,它会随着时间的推移而变化(在 mongo 2.x 和 3.x 之间已经有所不同)。

是否有更面向 future /更简单的方法来检查哪个元素/索引导致了冲突?

最佳答案

不幸的是,从 MongoDB 3.4.7 开始,没有方法在单独的、易于解析的字段中列出冲突索引。

Mongoose 中对此进行了讨论,但解决方案都依赖于解析实际的错误消息(参见 https://github.com/Automattic/mongoose/issues/2129)。

由于 Node 驱动程序只是报告服务器给出的错误,因此有一个 MongoDB 功能请求正是针对此功能(请参阅 SERVER-4637)。我建议对功能请求进行评论/投票,以提高对该问题的认识。

关于node.js - MongoDB NodeJS 驱动程序 : Duplicate key `E11000` extract index name,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45662924/

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