我有这个文档结构,属性“Name”在所有文档中必须是唯一的,如上所示:
{
"_id" : ObjectId("56686341d6389c004c689d5d"),
"Bosses" : {
"B1" : {
"_id" : NumberInt(1),
"Name" : "John"
},
"B2" : {
"_id" : NumberInt(1),
"Name" : "Mary"
}
}
}
{
"_id" : ObjectId("56686341d6389c004c689d6f"),
"Bosses" : {
"B1" : {
"_id" : NumberInt(1),
"Name" : "Mary" // should throw an error
}
}
}
可以使用此结构创建唯一索引吗?
答案 0 :(得分:1)
是的,您必须在Bosses.Name
上创建唯一索引。但是,你必须改变你的架构。 Bosses
应该是一个数组:
{
"_id" : ObjectId("56686341d6389c004c689d6f"),
"Bosses" : [
{
"_id" : NumberInt(1),
"Name" : "Mary" // should throw an error
}
}
}
如果您确实需要B1
,我建议您将其添加到Bosses
个对象中:"代码":" B1"。但这可能没有必要,因为您可以通过...find({ "Bosses.0.Name" })