我在 mongodb 中有一个集合,其中包含以下形式的文档:
{
"user": "user1",
"email: "user1@example.com",
}
其中“用户”和“电子邮件”字段是唯一的。我想在集合中插入一个新用户,同时检查两个值的唯一性。我可以像这样使用 mgo 在 golang 中插入:
session.SetSafe(&mgo.Safe{}) // ensure mgo waits for errors
user := struct{
string `bson:"user"`
string `bson:"email"`
}{
"user1",
"user1@different.com"
}
err := users.Insert(user) // where user is type *mgo.Collection
如果我打印err
它输出insertDocument :: caused by :: 11000 E11000 duplicate key error index: kails.users.$name_1 dup key: { : "user1" }
有没有一种惯用的方法来使用这个错误来查找哪些值不是唯一的?,如果不是两个?(或者是否需要其他步骤?)。使用正则表达式解析字符串感觉......错误。
如果无法使用错误来查找是否不唯一,是否有任何替代“$ or”查询(检查唯一)+插入的方法?
我已经阅读了mgo 文档,希望我没有错过任何重要的内容。