mongo belgelerinde "Bir belge benzersiz dizine sahip bir koleksiyona kaydedildiğinde, eksik dizinlenmiş anahtarlar boş değerlerle eklenecektir. Bu nedenle, aynı dizine sahip anahtarın eksik olduğu birden çok belgenin eklenmesi mümkün olmayacaktır."Eksik değerleri mongo db kullanarak benzersiz bir dizinde nasıl elde edersiniz?
İsteğe bağlı bir alanda benzersiz bir dizin oluşturmak imkansız mı? Bunu çözmek için bir userId ile bir bileşik indeks oluşturmalı mıyım? Benim özel durumumda, isteğe bağlı yerleşik bir oauth nesnesine sahip bir kullanıcı koleksiyonum var. , ör.
>db.users.ensureIndex({ "name":1, "oauthConnections.provider" : 1, "oauthConnections.providerId" : 1 });
Benim örnek kullanıcı Bu isteğe bağlı bir alan indeksine imkansız değil
{ name: "Bob"
,pwd: "myPwd"
,oauthConnections [
{
"provider":"Facebook",
"providerId" : "12345",
"key":"blah"
}
,{
"provider":"Twitter",
"providerId" : "67890",
"key":"foo"
}
]
}
Güzel, hatta belgelendi: "Eksik alanları olan belgeleri yok sayan benzersiz bir kısıtlama oluşturmak için seyrek ile benzersiz birleştirme yapabilirsiniz." – MrKurt
Başka bir soru, eğer seyrek bileşik indeksleriniz yoksa, gömülü bir nesne veya yuvalanmış alan üzerinde seyrek bir dizininiz olabilir mi? Yukarıdaki örnekte, gömülü oauthConnections koleksiyonunda bir dizin olmasını isterdik. – MonkeyBonkey