Pertanyaan mongodb temukan oleh beberapa item array


Jika saya memiliki catatan seperti ini;

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

Bagaimana saya bisa mencocokkan beberapa kata dari dalam MongoDB? Saat mencocokkan satu kata saya dapat melakukan ini;

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

Tetapi ketika saya mencoba ini untuk beberapa kata, itu tidak berhasil;

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

Saya menduga bahwa dengan menggunakan larik, ia mencoba untuk mencocokkan seluruh larik dengan yang ada di catatan, daripada mencocokkan konten individu.


75
2017-11-16 01:25


asal


Jawaban:


Tergantung apakah Anda mencoba mencari dokumen di mana words mengandung kedua elemen (text dan here) menggunakan $all:

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

atau salah satu dari mereka (text atau here) menggunakan $in:

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

125
2017-11-16 01:32