鍍金池/ 問答/數(shù)據(jù)庫/ mongoDB中,如何實現(xiàn)像我描述那樣的復雜的查詢?

mongoDB中,如何實現(xiàn)像我描述那樣的復雜的查詢?

問題背景描述:
一個在線考試系統(tǒng),在設(shè)計存放試題的數(shù)據(jù)庫時,
如果使用一個collections存放基礎(chǔ)題,中檔題,高難題,
通過設(shè)置每一個實例的屬性type:easy 或者 medium 或者 hard 來存放,如下表:

"title" : "下列選項中不屬于javascript基本數(shù)據(jù)類型的選項是?", 
"choose" : "A.boolen B.string C.function ", 
"true" : "C",
"type" : "easy" 

現(xiàn)在我想隨機查詢20道type:easy的題目,請問該怎么寫查詢語句...
已經(jīng)知道3.2版本新增了隨機查詢功能

db.questions.aggregate(
   { $sample: { size: 20 } }
)

但是我的試題數(shù)據(jù)庫中,不止存放了簡單題,還有中檔題和高難題。
請問如何才能從簡單題中隨機查詢20道題呢...
還有個問題,就算3.2版本新增了aggregate操作,但是mongoose貌似沒有
支持這個操作...那請問如果使用mongoose的話,如何達到題中的效果呢T.T

回答
編輯回答
孤巷

已經(jīng)解決..
方案一.插入試題時定義一個自增索引,然后用random*集合數(shù)據(jù)總條數(shù),用這個來find,find幾次就是取幾次隨機數(shù)。
方案二.mongoDB 3.2新增的聚合(aggregate)方法,通過$match(過濾數(shù)據(jù))和$sample(取隨機數(shù))來達到效果。

2018年3月15日 05:12