1

ご挨拶、

Salat と Casbah を使用して でユーザー コレクションを作成してMongodbいます。メール フィールドに一意のインデックスを追加するまで、すべてがうまく機能します。現在、私の挿入は、既存の電子メール アドレスの DB に実際のレコードが追加されていない一意の 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"
    }
]

これが私の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)

}
}
4

2 に答える 2

1

問題が何であるかを発見し、mongodb と casbah 2.10 をアップグレードしましたが、MongoConnection を使用して mongoDB に接続しました。mongo クライアントを使用して接続に切り替えたところ、すべて期待どおりに動作しました。

于 2014-05-06T01:11:25.367 に答える
0

「現在、私の挿入は、既存の電子メール アドレスの DB に実際のレコードが追加されていない一意の ID を返します。」とはどういう意味ですか? 例を挙げていただけますか?

一意のインデックスがあるため、同じメール ID の新しい挿入 (または scala/casbah の動作が何であれ) の挿入は失敗します。

于 2014-05-01T17:42:26.093 に答える