기본적으로 매우 포괄적이다.
users = db.users.find({criteria});
posts = db.posts.find({authorId : { $in : users.select(p -> p.id) } });
이 모든 criteria
일치하는 사용자와 모든 게시물을 발견 할 것이다 : MongoDB를하지 않는 동안 '지원'만 파국적 결과의 스키마 (의사 코드)를 파괴하지 않고, 부속 선택과 유사 뭔가을 지원, 조인 $in
을 통해 SQL과 달리 결과 (다른 클래스에 매핑 된 결과)는 단일 결과 BLOB에 번지는 않지만 사용자 목록을 얻고 다른 요청을 통해 해당 게시물을 얻습니다. 반면에 사전에 사용자를 저장하고 게시물에 매핑하여 애플리케이션 코드에 완전히 채워진 도메인 모델을 구축해야 할 수도 있습니다.
그러나 NoSQL을 사용할 때 그런 쿼리를 피하려고 시도해야한다는 것을 이해하는 것이 중요합니다. 가능한 경우 정보를 비정규 화하십시오. 예를 들어 authorId
을 게시물에 저장하는 대신 authorName
도 저장하십시오. 이렇게하면 게시물 목록을 더 쉽고 빠르게 표시 할 수 있지만 변경 사항을 작성자 이름과 동기화하는 등의 대가를 치르게됩니다. 다른 경우에는 정보를 임베드 할 수도 있습니다. 예를 들어, tags
즉
post { title:"foo", tags:["correct", "battery", "staple", "horse"] }
또한, 예를 들어, $in
을 사용하여 삭제를 수행 할 수 있습니다, 문자열 목록 간단하게 될 수있다 db.collection.remove({"_id" : {$in : [ id1, id2, ... ] } });
또한 가입으로 삭제할 수 있습니까? – jamesb