使用Scala-Salat/Casbah和Mongodb插入新记录



问候语,

我正在使用Salat和Casbah在Mongodb中创建一个用户集合,一切都很好,直到我在电子邮件字段上添加了一个唯一的索引。现在,我的insert返回一个唯一的id,在DB中没有为现有电子邮件地址添加实际记录。我是斯卡拉和卡斯巴/萨拉特的新手,所以如果我问了一个明显的问题,我很抱歉。

这是我的收藏索引

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)
}
}

我发现了问题所在,我升级了mongodb和casbah 2.10,但使用MongoConnection连接到mongodb。我使用mongo客户端切换到连接,所有工作都如预期。

"现在我的插入返回一个唯一的id,而没有在数据库中为现有电子邮件地址添加实际记录。"你能指定一个例子吗?

由于您有一个唯一的索引,对于相同的电子邮件id,新的插入(或scala/casbah的任何行为(都会失败。

相关内容

  • 没有找到相关文章

最新更新