2011-08-11 16 views
6

Birkaç koleksiyon ile bir veritabanı yapıyorum. Ana koleksiyondaki tüm belgeleri kullanmayı planladığım benzersiz dizelerim var. Diğer koleksiyonlardaki dokümanlar, ana koleksiyondaki dokümanlara referans gösterecek, bu da söz konusu kimliği diğer koleksiyonlarda saklamak zorunda kalacağım anlamına geliyor. Bununla birlikte, eğer _id'in sadece bir koleksiyonda değil, tüm bir veritabanında benzersiz olması gerekiyorsa, o zaman diğer koleksiyonlardaki _id'leri daha önce bahsedilen benzersiz dizeleri de kullanırdım.MongoDB'de, _id'in bir koleksiyon veya DB'nin tamamı için benzersiz olması gereken belge var mı?

Ayrıca, kendi _id'leri ayarlamak için tek yapmam gereken, eklediğim belgenin bir parçası olarak "_id":"unique_string" özelliğine sahip olduğumu varsayalım, doğru mu? "Unique_string" i başka bir biçime dönüştürmem gerekmiyor, doğru mu?

Ayrıca, hipotetik olarak, bir değişkene "_id" dizesini kaydedip bunun yerine kullanabilir miyim? Sadece açık olmak gerekirse, aşağıdaki gibi bir şey: var id = "_id" ve daha sonra kodda (örneğin bir ekleme veya sorgu sırasında) id:"unique_string" var.

iyisi, ve sayesinde
Sami

cevap

9

_id ler bir koleksiyonu benzersiz olması gerekir. İki farklı koleksiyonda aynı _id ile iki belge ekleyerek bunu hızlı bir şekilde doğrulayabilirsiniz.

Diğer varsayımlarınız doğrudur, sadece bunları deneyin ve çalışıp çalışmadıklarını görün (onlar). Pudingin kanıtı yemekte.

Not: _id'u doğrudan kullan, var id = "_id" sadece kodu derler.

+0

Teşekkürler! Sanırım haklısınız - bunu kolayca kendim denedim. ayrıca, id = "_id" sorusu, "_id" in kendisi yerine, belirli bir belgedeki diğer potansiyel anahtarlar için daha fazla ifade edilmiştir. Biri için çalışıyorsa, başkaları için çalışacaktır. cevabınız için teşekkürler! Bunu takdir ediyorum! – thisissami

+0

hey yi_H, Sadece cevabınızın ikinci kısmının yanlış olduğunu bilmenizi istedim. Anahtarları temsil etmek için değişkenleri kullanamazsınız - en azından doğrudan değil. Bir belgeyi önceden kaydetmeniz ve bu satırdaki değişkenlerle ilgili bir şey yapmak istediğinizde bu belgeyi sorguya aktarmanız gerekir. – thisissami

+0

@thisissami: Seni anlamıyorum ... Çalışmamanın birkaç nedenini düşünebilirim, örneğin: bir javascript nesnesinde anahtar kısım bir dizge olarak ayrıştırılır (bu yüzden asla alıntı). 'Id = "_ id" ile yapabilirsiniz; doc = {...}; doc [id] = değer; ' –

İlgili konular