2015-03-12 2 views
0

Люди, Я пытаюсь смешивать $all и $nin Параметры запроса mongodb 2.6. Смешивается ли $or с $all и $nin разрешено таким образом?

По сути, мы пытаемся получить здесь, являются документы, которые либо имеют ['foo','bar'] ... OR что не имеют ['baz']

запрос:

{ 
    "_type": { 
     "$in": [ 
      "A" 
     ] 
    }, 
    "tags": { 
     "$or": [ 
      { 
       "$all": [ 
        "foo","bar" 
       ] 
      }, 
      { 
       "$nin": [ 
        "baz" 
       ] 
      } 
     ] 
    } 
} 

ошибка:

HCError: (HCError) error converting cursor to array | caused by: MongoError: Can't canonicalize query: BadValue unknown operator: $or 

ответ

2

Ошибка в том, что $or не действует на f ield у его родителя, но ожидает всего целого «документа запроса», поскольку он является дочерним:

{ 
    "_type": { 
     "$in": [ 
      "A" 
     ] 
    }, 
    "$or": [ 
     { "tags": { "$all": [ "foo","bar"] } }, 
     { "tags": { "$nin": [ "baz" ] } } 
    ] 
} 
+0

позвольте мне попробовать: – Cmag