2013-05-23 2 views
0

MongoDB имеет замечательную проблему, описанную https://jira.mongodb.org/browse/SERVER-478 (и более общий вариант на https://jira.mongodb.org/browse/SERVER-589)не Комбинирование, и, и размер

В качестве обходного пути, я пытаюсь выразить запрос в виде композиции и, не и размер:

 { '$match' => { 
     '$and' => [ 
     items: {'$and' => ['$size' => 0, '$size' => 1, ... until the length I need is reached]}, 
     ... 
     ], 
    }}, 

Я продолжаю получать failed with error 10068: "exception: invalid operator: $and". Я не замечаю что-то действительно очевидное?

ответ

0

Во-первых, если вы пытаетесь использовать $and, скорее всего, вы можете не получить никаких результатов, потому что запрос попытается найти документы с элементами, размер которых должен соответствовать всем вашим размерам (0,1, ... длина тебе нужно). Я полагаю, вам стоит попробовать $or. Во-вторых, ниже вам действительно понадобится:

db.test.aggregate(
    {$match:{ 
    $or:[ {items:{$size:0}}, {items:{$size:4}} ]} // just include all your size conditions 
    } 
) 
+0

О, так мне нужно повторять элементы внутри и/или не наоборот? – Yevgeniy

+0

Да, я так думаю. Именно по этой причине вы получаете ошибку «неправильный оператор». – MervS

Смежные вопросы