mongodb birden çok dizi öğesi tarafından bulun


98

Böyle bir sicilim varsa;

{
  "text": "text goes here",
  "words": ["text", "goes", "here"]
}

MongoDB'deki birden fazla kelimeyi nasıl eşleştirebilirim? Tek bir kelimeyi eşleştirirken bunu yapabilirim;

db.find({ words: "text" })

Ama bunu birden çok kelime için denediğimde işe yaramıyor;

db.find({ words: ["text", "here"] })

Tahmin ediyorum ki bir dizi kullanarak, tek tek içerikleri eşleştirmek yerine tüm diziyi kayıttakiyle eşleştirmeye çalışıyor.

Yanıtlar:


174

Aşağıdakileri kullanarak wordsher iki öğeyi ( textve here) içeren belgeleri bulmaya çalışıp çalışmamanıza bağlıdır $all:

db.things.find({ words: { $all: ["text", "here"] }});

veya bunlardan biri ( textveya here) $inşunları kullanıyor :

db.things.find({ words: { $in: ["text", "here"] }});

3
Bu bana da yardımcı oldu, bir dizide nesne kimliğini bulmam gerekiyordu ve $ in: [ObjectId ("4f9f2c336b810d0cf0000017")] başarısız oldu, $ in: ["4f9f2c336b810d0cf0000017"] çalıştı
jbnunn

mangodb destek sayfasında bunu yapmanın başka bir yolunu da bulabilirsiniz docs.mongodb.org/manual/core/indexes/#indexes-on-sub-documents ve docs.mongodb.org/manual/core/indexes/#multikey-indexes
Vivek Bajpai

1
Bu, diziyi döngüye almaktan ve tekli find () gerçekleştirmekten daha mı iyi?
Rohit Nair
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.