【发布时间】:2014-09-06 12:31:58
【问题描述】:
我在 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 documentation,希望我没有错过任何重要的内容。
【问题讨论】:
-
您是如何使这些字段独一无二的?
-
你在哪里提到你的独特字段
Email id