第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

MongoDB 查找和迭代 vs 計(jì)數(shù)

MongoDB 查找和迭代 vs 計(jì)數(shù)

Go
桃花長(zhǎng)相依 2023-05-15 10:13:37
我對(duì) Mongo 有一個(gè)特殊的問(wèn)題。我們有一個(gè)具有以下結(jié)構(gòu)的 800k 文檔集合。{"_id" : ObjectId("5bd844199114bab3b2c19fab"),"u" : 0,"c" : 0,"iden" : "343754856","name" : "alan","email" : "mkasd@abc.com","mobile" : "987654321093456","expires" : ISODate("2018-11-29T11:44:25.453Z"),"created" : ISODate("2018-10-30T11:44:25.453Z")}我們已經(jīng)建立了索引iden,并且name我們通常會(huì)在其上進(jìn)行查詢。我們嘗試了兩種類型的查詢。db.Collection.find({"iden": "343754856", "name": "alan", "created":{"$gt": ....}).count()其中“created”是一個(gè)未索引的字段。db.Collection.find({"iden": "343754856", "name": "alan"})并遍歷所有記錄以根據(jù)created.然而,MongoDB 似乎在執(zhí)行第二個(gè)查詢時(shí)花費(fèi)了大量時(shí)間,而它應(yīng)該是對(duì) 1 的優(yōu)化。關(guān)于這里出了什么問(wèn)題的任何線索?我們正在使用 Go 庫(kù)。
查看完整描述

1 回答

?
慕雪6442864

TA貢獻(xiàn)1812條經(jīng)驗(yàn) 獲得超5個(gè)贊

第二個(gè)版本怎么可能是第一個(gè)版本的優(yōu)化?

您的第一個(gè)查詢從 MongoDB 服務(wù)器檢索一個(gè)數(shù)字:查詢結(jié)果的總數(shù)。當(dāng)您的第二個(gè)版本獲取所有匹配的文檔時(shí),您在“客戶端”端進(jìn)行計(jì)數(shù)。

相信我,MongoDB 可以像在 Go 客戶端中一樣快地在內(nèi)部計(jì)算結(jié)果文檔。讓 MongoDB 服務(wù)器發(fā)送結(jié)果、獲取結(jié)果并在客戶端解組它們需要更多的時(shí)間(取決于很多因素)。

請(qǐng)注意,如果您有一個(gè)包含"iden"and的復(fù)合索引"name",即使您添加了更多過(guò)濾器(如"created"您的示例),該索引仍可能被使用,但 MongoDB 必須迭代部分結(jié)果以應(yīng)用查詢的其余部分。要查看索引是否被使用,請(qǐng)執(zhí)行以下命令:

db.Collection.find(
    {"iden": "343754856", "name": "alan", "created": {"$gt": ....}
).explain()


查看完整回答
反對(duì) 回復(fù) 2023-05-15
  • 1 回答
  • 0 關(guān)注
  • 109 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)