В основном вам нужно выполнить запрос, подобный следующему:
db.test.find({$and:[{tags:'a'},{tags:'b'}, {$or:[{tags:'c'}, {tags:'d'}] }]})
С mongomapper, попробуйте это:
Test.where({
"$and" => [
:tags => 'a',
:tags => 'b',
"$or" => [:tags => 'c', :tags => 'd']
]
})