을 사용하여이 쿼리를 배열로 변환하려고합니다. 그래서 PHP에서 사용할 수 있지만'index '문제가 있습니다 ... 보시다시피 , 각 '$ 또는'필드 집합을 유효성 검사 및 나는 '$ 또는'같은 모든 그들을 가입 할 수 없기 때문에 배수 '$ 또는'필요합니다. 여기
쿼리 객체입니다{
'$and' : [
{ '$or' : [
{'author' : { '$exists' : false } }
, {'author' : { '$in' : [ 'john' , false ] } }
] }
, {'$or' : [
{ '$and' : [ { 'type' : 'post' } , { 'user_id' : 123456 } ] }
, { 'type' : 'comment' }
] }
, { '$or' : [
{ 'tags.name' : { '$in' : [ 'tag1' , 'tag2' ] } }
, { 'tags' : false }
, { 'tags' : { '$exists' : false } }
] }
]
}
'$이 나'는 '작가'필드의 유효성을 확인, 그래서 현장에서 '존'으로 모든 문서를 검색하거나 거짓있어 첫 번째 세트 및 나는 '저자'필드가없는 문서를 원합니다. 두 번째 세트는 'type'필드의 유효성을 검사합니다. 'comment'값 또는 'post'가 있고 'user_id'가 123456 인 문서가 필요합니다. 세 번째 세트는 'tags'필드의 유효성을 검사합니다. '$ in'또는 'tags'= false 또는 'tags'안에 'tags.name'이 없습니다. ...
이 세 세트는 모두 맞아야합니다. 'operator ... 나는'$ and '가 2.0+에서만 작동한다는 것을 알고 있지만 2.1 (aggregation frawework testing ... 그냥 잠금 장치입니다 ... XD)
나는 그것이라고 생각합니다. 쿼리를 작성하는 또 다른 방법이 있다면 나는 reeeally보고 싶다 ... 고마워!
에 쿼리입니다 {$이 존재 : 거짓}. 이것은 느려질 것입니다 * 쿼리를보다 효율적으로 재 작성하려면 스키마를 변경해야합니다. –
Thx! 나는 그것을 염두에 둘 것이다! –