我在PostgreSQL查询中有这些WHERE
条件需要转换为mongoDB:
(starts_at BETWEEN :starts AND :ends) OR (starts_at <= :starts AND ends_at >= :starts)
注意:starts
和:ends
是UTC时间。具体来说,我将它从ActiveRecord移动到MongoMapper。如果你可以帮助我那么奖金!
答案 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 } }
]
)