我尝试根据两个字段创建一个唯一的多键索引:
我的文件:
> db.users.find().pretty()
{
"_class" : "bean.User",
"_id" : ObjectId("52f3945e2f9d426e9dcb1ac8"),
"commandes" : [
{
"idCommande" : 1,
"nom" : "toto",
"prenom" : "TATA",
"adresse" : "",
"ville" : "Brest",
"codePostal" : "29200",
"montantTotal" : 0,
"voyagesSouscrits" : [
{
"idVoyage" : "123",
"duree" : 10,
"nbPersonnes" : 0,
"villeDepart" : "Nantes",
"prixVoyage" : 100000
}
]
}
],
"mail" : "toto@toto.fr",
"password" : "1234"
}
我已经确保邮件上有唯一索引。 现在我想为每个“idCommande”创建一个独特的约束,然后就不可能在我的用户的“commandes”中创建一个带有相同“idCommande”的“commande”。
我试过了
db.users.ensureIndex({_id : 1, idCommande : 1 },{unique :true});
还有:
db.users.ensureIndex({_id : 1, idCommande : 1 },{unique :true, multikey : true});
但是我可以插入相同的“idCommande”。
我知道addToSet存在,但我不希望对我的全局文档进行约束
你有什么想法吗?
提前致谢
答案 0 :(得分:0)
我认为
db.users.ensureIndex({_id: 1, "commandes.idCommande" : 1 },{unique :true})
应该足够了
答案 1 :(得分:0)
答案不应该是
db.users.ensureIndex({“commandes.idCommande”:1},{unique:true});
这将阻止'idCommande'重复输入。