[mongodb] 배열 필드에 MongoDB의 고유 값 또는 다른 배열이 포함되어 있는지 확인하는 방법은 무엇입니까?

지금 mongodb를 사용하고 있습니다.

블로그 포스트 모음이 있고 블로그 포스트에 배열 인 태그가 있습니다. 예 :

blogpost1.tags = ['tag1', 'tag2', 'tag3', 'tag4', 'tag5']
blogpost2.tags = ['tag2', 'tag3']
blogpost3.tags = ['tag2', 'tag3', 'tag4', 'tag5']
blogpost4.tags = ['tag1', 'tag4', 'tag5']

이 검색을 어떻게 수행 할 수 있습니까

  1. ‘tag1’포함
  2. [ ‘tag1’, ‘tag2’] 포함
  3. [ ‘tag3’, ‘tag4’] 중 하나를 포함


답변

이것을 시도하십시오 :

db.blogpost.find({ 'tags' : 'tag1'}); //1
db.blogpost.find({ 'tags' : { $all : [ 'tag1', 'tag2' ] }}); //2
db.blogpost.find({ 'tags' : { $in : [ 'tag3', 'tag4' ] }}); //3


답변

내 경험은 (2) 다음 솔루션이 “$ all”솔루션보다 훨씬 빠르다는 것입니다.

db.blogpost.find({ $and: [ {tags: 'tag1'} ,{tags: 'tag2'} ] });

그러나 솔직히 말해서, 나는 이유가 아닙니다. 누구나 알고 있다면 관심이 있습니다.


답변