聚合,$ unwind和$ group不是我的解決方案,因爲它們使查詢非常緩慢,因爲我期望通過db.collection.find()方法獲取我的記錄。
問題是我需要更多的子數組中的一個值。例如,從以下示例中,我想獲得「類型」:「考試」和「類型」:「測驗」元素。
{
"_id" : 22,
"scores" : [
{
"type" : "exam",
"score" : 75.04996547553947
},
{
"type" : "quiz",
"score" : 10.23046475899236
},
{
"type" : "homework",
"score" : 96.72520512117761
},
{
"type" : "homework",
"score" : 6.488940333376703
}
]
}
我看起來像
db.students.find(
// Search criteria
{ '_id': 22 },
// Projection
{ _id: 1, scores: { $elemMatch: { type: 'exam', type: 'quiz' } }}
)
的結果應該是像
{ "_id": 22, "scores" : [ { "type" : "exam", "type" : "quiz" } ] }
但這在乘坐類型: '考試',只返回類型:'測驗'。有沒有人知道如何做到這一點與db.find()?
感謝回答@yogesh,PLZ讓我知道什麼將是更短的時間查詢最佳聚集。 –
檢查此http://stackoverflow.com/questions/2599943/mongodbs-performance-on-aggregation-queries或使用索引和分片 – Yogesh
我已經索引和分片不是一個選項,我已經嘗試了很多聚合的選項,但展開使查詢方式變慢,這就是爲什麼我在find()中尋找任何解決方案的原因。 –