В документации mongo говорится, что «при сохранении документа в коллекцию с уникальными индексами любые отсутствующие индексированные ключи будут вставлены с нулевыми значениями. Таким образом, будет невозможно вставить несколько документов без одного и того же индексированного ключа. «
Так нельзя ли создать уникальный индекс для необязательного поля? Должен ли я создать составной индекс, скажем, также userId, чтобы решить эту проблему? В моем конкретном случае у меня есть пользовательская коллекция, которая имеет необязательный встроенный объект oauth.
например,
>db.users.ensureIndex( { "name":1, "oauthConnections.provider" : 1, "oauthConnections.providerId" : 1 } );
Мой пример пользователя
{ name: "Bob"
,pwd: "myPwd"
,oauthConnections [
{
"provider":"Facebook",
"providerId" : "12345",
"key":"blah"
}
,{
"provider":"Twitter",
"providerId" : "67890",
"key":"foo"
}
]
}