我需要在文檔中存儲三個id:s,但它們只能出現一次。例如下面的文件只能在此集合出現一次:MongoDB集合中的唯一文檔
{
"user": ObjectId("j8uwh902w5489"),
"comment": ObjectId("09890583457jkjsf4"),
"whatever": ObjectId("j8uwh902w5489")
}
如何確保這將是MongoDB中一個獨特的文件?
我需要在文檔中存儲三個id:s,但它們只能出現一次。例如下面的文件只能在此集合出現一次:MongoDB集合中的唯一文檔
{
"user": ObjectId("j8uwh902w5489"),
"comment": ObjectId("09890583457jkjsf4"),
"whatever": ObjectId("j8uwh902w5489")
}
如何確保這將是MongoDB中一個獨特的文件?
那麼你可以使用MongoDB's Unique Compound Index
db.users.createIndex({ user: 1, comment: 1, whatever: 1 }, { unique: true })
少數病例:
> db.users.insert({user: "A", comment: "B", whatever: "C"})
WriteResult({ "nInserted" : 1 })
> db.users.insert({user: "A", comment: "C", whatever: "B"})
WriteResult({ "nInserted" : 1 })
> db.users.insert({user: "A", comment: "B", whatever: "C"})
> WriteResult({
"nInserted" : 0,
"writeError" : {
"code" : 11000,
"errmsg" : "insertDocument :: caused by :: 11000 E11000 duplicate key error index: test.users.$user_1_comment_1_whatev
er_1 dup key: { : \"A\", : \"B\", : \"C\" }"
}
})
我知道我在這裏使用的字符串。但是ObjectIds也可能類似。請試試看。
目的是什麼? –
我想知道什麼人會是他們的工作地點和工作對象。這就是爲什麼我希望組合是獨一無二的。 – Oskar