在我的用例中,我有超過3000個變量ids,我已經將其分配給其他集合作爲mongo db中的外鍵。在其他集合中,對於每個外鍵,包含列表類型中的一個字段的文檔數量更多。我需要通過滿足至少一個每個外鍵列表大小的文檔大於0的條件來查詢從3000中檢索不同的外鍵。我目前使用下面的查詢作爲示例。Mongo Db優化查詢
db.values.distinct('variable',{variable:{$in:variableIds}, $nor:[{source: {$exists: false}},{source: {$size: 0}}]})
其中變量如下面的 「值」 收藏的外鍵。 variableIds
是作爲變量集合的主鍵的唯一標識列表。
{
"_id" : ObjectId("546db048e4b0c0187ab9eefd"),
"dateNum" : 41274,
"source" : [
{
"value" : 625,
"formatCode" : "General"
}
],
"variable" : ObjectId("546db048e4b0c0187ab9eefc")
}
但由於$in
條件3000個IDS查詢似乎是大花更多的時間來執行有另一種方式來優化查詢?
我已經添加了指數也顯示了同樣的結果,我也搜索在$傳球超過3000個項目中會造成任何性能問題,也沒有任何其他替代查詢除了使用不同 – 2014-11-24 08:59:39
指數領域'variable'和'source.value'。然後嘗試下面的查詢:db.sample.distinct('variable',{variable:{$ in:[1]},「source.value」:{$ exists:true}}) – BatScream 2014-11-24 09:11:22