1

问候,

我正在使用 Salat 和 Casbah 在 中创建用户集合Mongodb,一切正常,直到我在电子邮件字段上添加了唯一索引。现在我的插入返回一个唯一的 id,没有在数据库中为现有电子邮件地址添加任何实际记录。我是 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"
    }
]

这是我的道对象

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)

}
}
4

2 回答 2

1

我发现问题出在哪里,我升级了 mongodb 和 casbah 2.10,但使用 MongoConnection 连接到 mongoDB。我使用 mongo 客户端切换到连接,并且所有工作都按预期进行。

于 2014-05-06T01:11:25.367 回答
0

“现在我的插入返回一个唯一的 ID,没有在数据库中为现有电子邮件地址添加实际记录”是什么意思。你能指定一个例子吗?

由于您有一个唯一索引,因此对于相同的电子邮件 ID,插入将失败(或任何 scala/casbah 的行为)。

于 2014-05-01T17:42:26.093 回答