简体   繁体   中英

mongodb find by multiple array items

If I have a record like this;

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

How can I match multiple words from it in MongoDB? When matching a single word I can do this;

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

But when I try this for multiple words, it doesn't work;

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

I'm guessing that by using an array, it tries to match the entire array against the one in the record, rather than matching the individual contents.

Depends on whether you're trying to find documents where words contains both elements ( text and here ) using $all :

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

or either of them ( text or here ) using $in :

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM