MongoDB/Mongoose에서 "where $ in"쿼리를 사용하여 배열의 각 태그에 대해 하나의 결과 만 반환하려고합니다. 종류는 다음과 같습니다.MongoDB 쿼리 - 태그 배열에서 각각 하나를 찾습니다.
db.images.find({ hashtag : { $in : ['tag1', 'tag2', 'tag3'] } });
그리고 나는 3 가지 독특한 결과를 얻었습니다. 각각의 태그 집합에서 가져옵니다.
[{name:'image1', hashtag:'tag1'},
{name:'image55', hashtag:'tag2'},
{name:'image99', hashtag:'tag3'}]
SQL에서는 GROUP BY와 같은 것을 사용하지만 Map/Reduce를 수행하지 않고 MongoDB에서 해당 항목을 찾을 수 없습니다.
어쨌든 그렇게하니? 감사.
--edit 내가 될 원하는에 대한 동등한 SQL : 당신의 2.2 출시를 기다리고있는 것처럼 이상적으로
SELECT * FROM images WHERE hashtag in ('tag1', 'tag2', 'tag3') GROUP BY hashtag;
또는 MongoDB를 더 무작위
SELECT * FROM images WHERE hashtag in ('tag1', 'tag2', 'tag3') GROUP BY hashtag ORDER BY rand();
문서의 모양을 분명히 할 수 있습니까? 이름과 해시 태그 배열입니까? 실제로 SQL 그룹이 당신을 위해 어떤 역할을하는지 보지 못합니다 - tag1을 가진 단일 이미지 이름, tag2를 가진 단일 이미지 이름 및 tag3을 가진 단일 이미지 이름을 원하는 것처럼 보입니까? 나는 심지어 이것이 당신의 어플리케이션에서 쉽게 풀릴 수 있는지조차 확신 할 수 없다. –
아니, 나의 문서는 실제로 그렇게 보이지 않는다. 이것은 내가 성취하고자하는 일의 예일뿐입니다. – 12vunion
SQL은 매우 간단합니다 : SELECT * FROM'images' where 'hash1', 'tag2', 'tag3'에서 'hashtag'WHERE GROUP BY'hashtag'; – 12vunion