Перевести условия PostgreSQL в mongoDB - PullRequest
1 голос
/ 13 марта 2012

У меня есть WHERE условия в запросе PostgreSQL, которые мне нужно перевести в mongoDB:

(starts_at BETWEEN :starts AND :ends) OR (starts_at <= :starts AND ends_at >= :starts)

Примечание :starts и :ends - время UTC. В частности, я перемещаю это из ActiveRecord в MongoMapper. Так что бонус, если вы можете помочь мне с этим!

1 Ответ

2 голосов
/ 13 марта 2012

В mongodb вы бы использовали оператор $ или , например, (вместе с $ gte и $ lte ):

db.collection.find({
    $or: [
        { starts_at: { $gte: starts }, starts_at: { $lte: ends } },
        { starts_at: { $lte: starts }, ends_at: { $gte: starts } }
    ]
});

В MongoMapper этобудет переводить на:

Model.where(
    :$or => [
        { :starts_at => { :$gte => starts, :$lte => ends } },
        { :starts_at => { :$lte => starts }, :ends_at => { :$gte => starts } }
    ]
)
...