0
我試圖構建查詢以實際上有趣的方式與數據庫進行交互。其中之一是在一定的年限內搜索文件。我的想法是建立一個聚合管道,在這裏我檢查是否在搜索表單中選擇了年份範圍,然後返回匹配的文檔。如果未選擇範圍,則返回所有文檔並轉到聚合管道的下一個階段。
這是我曾嘗試(只有一個階段,在aggregate
因爲我還沒有成功地使這第一個工作,至今):
db.collection('archives').aggregate([
{ $cond: { if: yearStart.length === 4 && yearEnd === 4 },
then: { $match:
{ $and:
[
{ year: {$gte: yearStart} },
{ year: {$lte: yearEnd} }
]
}
},
else: { $match: {} }
}
]).toArray((err, docs) => {
if (err) throw (err)
res.json(docs)
})
所以,這不起作用。我收到錯誤MongoError: A pipeline stage specification object must contain exactly one field.
。所以我認爲這只是一個附帶說明的$cond
聲明的問題。但不是。我在這裏遇到了崩潰。所以我想,也許$cond
並不意味着像這樣使用(返回$match
階段)。我傾向於這樣認爲,因爲文檔只顯示了一個返回簡單值的例子......是不是?
在此先感謝!
聚合管道管道。無條件的。根據用戶輸入保存應用層的「*,如果在搜索表單中選擇了年份範圍*」邏輯,並執行不同的查詢。 –