0
我有對象的結構集合,像這樣:上的對象數組不靈獨特partialFilterExpression指數
{
emails: [{email:"[email protected]", type: "work"}],
_companyId: "FLEHFHOIEFHOIHEFHL"
}
我想創建一個唯一索引,這樣的emails
和_companyId
組合是唯一的。我只是做一個簡單的複合索引,但是當我保存兩個沒有電子郵件的人時,它會在第二個引發錯誤,因爲它沒有索引emails.email
字段的值,只在索引中留下_companyId
,這會引發一個重複鍵錯誤,當我嘗試插入第二個沒有電子郵件。如果存在電子郵件,我只需要索引該字段。所以我找到了partialFilterExpression
的能力。不幸的是,這是行不通的!它不會拋出任何錯誤,但它很高興允許重複!
People.ensureIndex({ 'emails.email': 1, _companyId: 1 }, {
unique: 1,
partialFilterExpression: {
"emails": { "email": { $and: [{ $exists: true, $ne: "" }] } }
},
collation: { locale: "en", strength: 2 }
});
所以我改成了這樣:
People._ensureIndex({ 'emails.email': 1, _companyId: 1 }, {
unique: 1,
partialFilterExpression: {
"emails.email": { $and: [{ $exists: true, $ne: "" }] }
},
collation: { locale: "en", strength: 2 }
});
,它不會在所有的話說創建索引:
Error: key emails.email must not contain '.'
有沒有辦法做我我正在努力去做,還是失敗的原因?