Чтобы немного изменить ответ MauriRamone на уменьшенную версию:
db.getCollection('test').find({
$and:[
{"text":{$exists:true} },
{$where: "!this.tags || this.tags.length < 2"}
]
})
Однако, $where
медленный, и другие варианты (например, Энтони) должны быть предпочтительными.
Ваш исходный запрос не работал, потому что $or
работает только в выражениях , а не в полях, и вам нужен оператор $expr
для размера.