我有一個數組中定義的貓鼬模型子文檔如下:如何用Mongoose查找數組元素?
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var schema = Schema({
author: { type: Schema.Types.ObjectId, ref: 'Author' },
pages: [{
number: Number,
type: { type: String, enum: ['boring', 'fun']},
}]
});
module.exports = mongoose.model('Book', schema);
現在我想通過某個作者獲得的所有書籍'fun'
的總頁數。我發現許多類似的問題(和答案)討論如何在此場景中找到有趣的頁面的Book
,但是我想獲得所有有趣頁面的數組,或者至少是該數組的長度,但如果可能,我想獲取數組本身。我怎樣才能做到這一點?
感謝,
嘗試(未經測試,將新增彷彿正確答案): Book.aggregate( {$放鬆: 「$頁」}, {$組:{ _id: 「$ pages.type」, 計數:{$總和:1} }} ) – nadavvadan
@nadavvadan謝謝!這似乎是工作。但我只是意識到我需要更多的過濾,而不是所有的書籍,我只需要從某些作者的書中進行選擇。如果問題不多,可否請添加? :)再次感謝, – jeff
試試這個:Book.aggregate({$ match:{author:ObjectId(「12-bytes-of-hex」)}},{$ unwind:「$ pages」},{$ group:{ _id:「$ pages.type」,count:{$ sum:1}}}) – nadavvadan