我需要将PostgreSQL查询中的这些WHERE
条件转换为mongoDB:
(starts_at BETWEEN :starts AND :ends) OR (starts_at <= :starts AND ends_at >= :starts)
注
:starts
和:ends
是UTC时间。具体来说,我要把这个从ActiveRecord移到MongoMapper。如果你能帮我的话,我会给你奖金的! 最佳答案
在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 } }
]
)