2010-11-19 22 views
1

, tüm :(MongoDB: ensureIndex benim yerel kurulum MongoDB koleksiyonunda toplu veri eklemek çalışıyorum saatlerinden

Bir anahtar ya da anahtarlar için benzersiz dizin hariç ayarlanır hem tek bir tuş ve kompozit tuşları çalışmıyor kullandım bu:

sonra
ensureIndex({appid:1, userid:1}, {unique:true, dropDups:true, background:true}) 

bu (ben her nedense, birden fazla anahtar endeksi çalışmıyor için tahmin coz)

ensureIndex({userid:1}, {unique:true, dropDups:true, background:true}) 

hatları üzerinde kullandıktan sonra ben satırları milyonlarca eklemek için çalıştı Bir php betiği (hem insert hem de batchInsert aracılığıyla) ve her zaman çift kullanıcı grupları vardır: '(lütfen bana şu şekilde kılavuzluk edin :(

+0

Merhaba! Sonunda çalışmayı başardın mı? Aynı sorun var ya da en azından düşünüyorum. Ancak Mongo konsol yöneticisini çalıştırırken arkaplanı: true: setini kullanarak dizinleri zorlayabilirim. Bunu denedin mi? – Industrial

cevap

0

İndeks oluşturulduğundan emin olmak iyi bir fikir olabilir. Varsayılan olarak, yazma işlemleri (dizin oluşturma gibi) yangın-unuttur ve hata/başarı beklemez. Bu, sürücüdeki bir hata olabilir (php client lib).

Sen

db.coll.getIndexes() 

koleksiyonu için endeksler listelemek için çalışabilir.

+0

Tam olarak aynı şeyi düşünüyordum, coz ov PHP istemcisi, coz komut satırında coz düzgün bir şekilde oluşturuyor ve aynı zamanda çiftler üzerinde hatalar atıyor, ama burada yine dropDups için gizemli bir özellik ... eğer bu niteliğin amacı nedir? çiftleri işlememek ve tanımına göre kaldırmak? garip şeyler :-) –

+0

btw, RockMongo kullanıyorum aynı zamanda kayıtlar eklerken (benim durumumda) indeksler oluşturmayı görebiliyorum, ama çiftler için çalışmıyorlar ... –

1

warrantyIndex'in varolan bir dizinin üzerine yazmayacağını fark ettim. Bunun yerine, önce varolan dizini silmeniz gerektiğine inanıyorum ve THEN, continueIndex'i çalıştırmalısınız.