将PostgreSQL条件转换为mongoDB

时间:2012-03-12 21:46:17

标签: postgresql mongodb activerecord mongomapper

我在PostgreSQL查询中有这些WHERE条件需要转换为mongoDB:

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

注意:starts:ends是UTC时间。具体来说,我将它从ActiveRecord移动到MongoMapper。如果你可以帮助我那么奖金!

1 个答案:

答案 0 :(得分:2)

在mongodb中,您可以像这样使用$or运算符(以及$gte and $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 } }
    ]
)