2014-09-07 3 views
0

현재 로그인 한 사용자의 비공개 블로그와 함께 모든 비공개 블로그의 목록을 mongo에 쿼리하려면 어떻게해야합니까?조건부 조건에 대한 mongodb 쿼리

블로그 (컬렉션) :
_user_id: ref(User), title: String, body: String, private: Boolean, default:false

내가이 쿼리 모든 비 개인 블로그를 얻을 수 있습니다 :

Blog.find({_user_id: req.user}).where('private', false).exec();

그러나 나는 또한 모든 블로그를 취득하는 현재 로그인 한 사용자 만 비공개로 표시됩니다.

단일 쿼리를 사용하여이 문제를 해결할 수도 있습니다. map-reduce/aggregate와 같은 사전 mongodb 기능에 의존해야합니까?

+0

['$ or'] (http://docs.mongodb.org/manual/reference/operator/query/or/#op._S_or)를 사용해 보셨습니까? – JohnnyHK

+0

예,하지만 저는 두 조건을 모두 원하기 때문에 여기에 도움이되지 않을 것이라고 생각합니다. – ArrC

답변

0

단일 쿼리의 두 경우를 포함 $or를 사용할 수 있습니다

Blog.find({$or: [ 
    // Non-private blogs 
    {private: false}, 
    // Blogs of the current user 
    {_user_id: req.user} 
]}).exec(function(err, docs) { ... }); 

이 두 $or 조항의 결과의 조합을 제공합니다.