MongoDB bir dizi üzerinde harf duyarsız arama yapmak?

2 Cevap php

Yani, MongoDB ile ayaklarım ıslak almak için karar verdik ve bugüne kadar seviyorum. Bu büyük olan çok hızlı ve esnek görünüyor. Ama, ben yine ilk öğrenme eğrisi üzerinden gidiyorum ve gibi, ben en temel şeyler üzerinde bilgi için kazma saatler harcıyorum.

Ben MongoDB çevrimiçi belgelere boyunca arama ettik ve bu herhangi bir söz olmadan sayfaları üzerinden google'da saat geçirdim. Ben Mongo hala (v1.x) oldukça yeni olan çok fazla bilgi henüz yok neden açıklıyor biliyorum. Ben bile çok şans olmadan Mongo kitap arıyorum çalışıyor ettik. Yani evet, ben şimdi sana dönüp, hiçbir şans ile RTFM çalıştım, bu yüzden ettik.

Ben her belgede iç içe çeşitli hashtags bir dizi var (örn: # elma, portakal #, # Elmalar, # ELMA) ve ben her durumda elma içeren tüm belgelere erişmek için bir harf duyarsız find () yapmak istiyorum. Bu find / i bazı regex desteklemiyor gibi görünüyor, ama bu da çalışma almak gibi olamaz.

Neyse, ben bu kimse için hızlı bir cevaptır umarım.

İşte harfe duyarlıdır PHP benim mevcut çağrısı:

$cursor = $collection->find(array( "hashtags" => array("#".$keyword)))->sort(array('$natural' => -1))->limit(10);

Yardım?

2 Cevap

Ben sorgu gerçekten ne istediğini dönen değil şüpheli ...

Eğer yaparsanız

db.col.find( { some_array_field: ["item1", "item2"] } );

o olacak some_array_field içinde TAM bu iki öğe only maç belgeler. Ile bir belge varsa Yani [Item1, öğe2] bu maç olacak hashtags, fakat bir belge [Item1, item2, Item3] etiketleri maç olmayacak.

Sen $ Bu yazı açıklanan tüm argümanını kullanabilirsiniz:

How do you do an AND query on an array in mongodb?

örneğin

db.col.find( { some_array_field: { $all : ["item1", "item2"] } } );

veya:

db.col.find( { some_array_field: "item1", some_array_field: "item2" } );

Eksiksiz belge-maç ve kısmi maçının Bu ayrım gerçekten ilk başta benim için MongoDB de kafa karıştırıcı oldu.