问候,
我正在使用Salat和Casbah在Mongodb
中创建用户集合,在我在电子邮件字段中添加唯一索引之前,一切正常。现在,我的插入返回一个唯一的ID,在DB中没有为现有电子邮件地址添加实际记录。我是scala和Casbah / Salat的新手,所以如果我提出一个明显的问题,我会道歉。
这是我的集合索引
db.users.getIndexes()
[
{
"v" : 1,
"key" : {
"_id" : 1
},
"name" : "_id_",
"ns" : "study_test.users"
},
{
"v" : 1,
"unique" : true,
"key" : {
"email" : 1
},
"name" : "users_email",
"ns" : "study_test.users"
}
]
这是我的dao对象
object UserDao extends SalatDAO[UserModel, ObjectId](collection = MongoUtil.getCollection("study", "users")) {
val logger = LoggerFactory.getLogger(UserDao.getClass)
val dao = this
UserDao.collection.ensureIndex(DBObject("email" -> 1), "users_email", true)
RegisterJodaTimeConversionHelpers()
def create(userContract: UserContract): Option[ObjectId] = {
val userModel = UserConverter.toModel(userContract)
dao.insert(userModel)
}
}
答案 0 :(得分:1)
我发现问题是什么,我升级了mongodb和casbah 2.10,但使用MongoConnection连接到mongoDB。我使用mongo客户端切换到连接,所有工作都按预期工作。
答案 1 :(得分:0)
你是什么意思“现在我的插入返回一个唯一的ID,在数据库中没有为现有的电子邮件地址添加实际记录。”你能举个例子吗?
由于您具有唯一索引,因此对于相同的电子邮件ID,插入将对新插入(或scala / casbah的任何行为)失败。