使用Mongoid 3.1.5和MongoDB 2.4.9創建查詢我從等價的MongoDB查詢中得到了與Mongoid/Moped查詢不同的結果。Mongoid Moped查詢返回的結果與MongoDB shell不同
更新添加Mongoid查詢 查詢在其漫長的是:
return Video.order_by(release_date: :desc, avg_rating: :desc, title: :asc)
.where(:viewable => true, :release_date.lte => start_at_date, :release_date.gte =>
start_date, :categories.in => genre_filters).any_of({:avg_rating.gt => 1},
{:avg_rating => nil}).skip(skip*POSTERS_PER_ROW).limit(limit*POSTERS_PER_ROW)
.only(:_id, :poster_large_thumb, :title, :similar_as_string, :release_date, :avg_rating)
此查詢工作正常進行的一切我已經在它拋出時,除了要AFAIK發現genre_filters
原因只有一個對象。
我得到以下控制檯輸出描述助力車查詢:
MOPED: 127.0.0.1:27017 QUERY database=guide_development collection=videos
selector={"$query"=>{"viewable"=>true, "release_date"=>{"$lte"=>2014-03-27 00:00:00 UTC,
"$gte"=>1850-01-01 00:00:00 UTC}, "categories"=>{"$in"=>["Netflix"]},
"$or"=>[{"avg_rating"=>{"$gt"=>1}}, {"avg_rating"=>nil}]}, "$orderby"=>
{"release_date"=>-1, "avg_rating"=>-1, "title"=>1}}
flags=[:slave_ok] limit=60 skip=0 batch_size=nil fields={"_id"=>1,
"poster_large_thumb"=>1, "title"=>1, "similar_as_string"=>1, "release_date"=>1,
"avg_rating"=>1} (198.0939ms)
這不返回任何結果 - 不是我所期待。
一段時間後,我想出了以下MongoDB的外殼查詢,它應該是等價的:
var start = new Date(2014, 3, 27);
var end - new Date(1850,1,1);
db.videos.find({
viewable: true, release_date: {
$lte: start, $gte: end
},
categories:{
$in: ["Netflix"]
}, $or: [ {avg_rating: {$gt: 1}}, {avg_rating: {$exists: false}}],
},{
_id: 1,
poster_large_thumb: 1,
title: 1,
similar_as_string: 1,
release_date: 1,
average_rating: 1
}).sort({release_date: -1, avg_rating: -1, title:1}).skip(0).limit(60).count()
給出MongoDB的外殼一個結果,這是一個對象,應該找到。
任何想法?一個對象的結果在Mongoid中導致問題嗎?
請您提供示例文檔嗎? –