MongoDB Casbah Query DSL $ существует с $ in

Попытка преобразовать следующий консольный запрос mongo в DSL casbah/scala.

db.campaign.find({ "space.id": { $exists: true, $in: ["123","456"] } })

Лучшее, что я придумал, это следующее, в котором используется или вместо этого.

$or("space.id" $exists false, "space.id" $in restrictedSpaces)

Просто ищу кого-то с большим опытом (читай любого), чтобы сказать, что это правильный способ сделать это или что есть лучший способ сделать это.

Спасибо, Аарон


person atom.gregg    schedule 31.10.2013    source источник


Ответы (1)


Ага..

Приношу свои извинения за публикацию возможно глупого вопроса. Ответ, похоже, заключается в том, что делать то, что я сделал, не нужно.

Mongo кажется достаточно умным, чтобы игнорировать $in, когда поле не существует, в то время как я ожидал, что он выдаст ошибку, информирующую меня о том, что в документе нет поля и, следовательно, мой первоначальный вопрос.

Следующий простой запрос работает и иллюстрирует простоту и производительность DSL и mongo.

"space.id" $in restrictedSpaces

Примечание: limitedSpaces — это список строк.

Спасибо, Аарон

person atom.gregg    schedule 31.10.2013