mongodb 여러 배열 항목으로 찾기


96

이런 기록이 있다면

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

MongoDB에서 여러 단어를 어떻게 일치시킬 수 있습니까? 한 단어를 일치시킬 때 이렇게 할 수 있습니다.

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

하지만 여러 단어에 대해 시도하면 작동하지 않습니다.

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

배열을 사용하여 개별 내용을 일치시키는 대신 전체 배열을 레코드의 배열과 일치 시키려고한다고 생각합니다.

답변:


168

다음을 사용하여 words두 요소 ( texthere) 가 모두 포함 된 문서를 찾으려고하는지 여부에 따라 다릅니다 $all.

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

또는 다음 중 하나 ( text또는 here) 사용 $in:

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

3
이것은 나에게도 도움이되었고, 배열에서 객체 ID를 찾는 데 필요했습니다. $ in : [ObjectId ( "4f9f2c336b810d0cf0000017")] 실패, $ in : [ "4f9f2c336b810d0cf0000017"] 작동
jbnunn


1
이것이 배열을 반복하고 단일 find ()를 수행하는 것보다 낫습니까?
Rohit Nair
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.