亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

關于 mongodb 索引的奇怪問題 實際寫入的數據索引沒有完成所以查詢不到?

關于 mongodb 索引的奇怪問題 實際寫入的數據索引沒有完成所以查詢不到?

臨摹微笑 2018-09-03 07:56:02
比如腳本在不停的寫數據(數據的層級很深),tail -f 日志可以看到已經寫入到 10000 條了,在 mongodb 里面也可以 find 這條數據,但是直接 count 卻只有 9800 條數據,并且一直落后 200 條,與這條數據相關的大概 9 條索引(不要問我為什么這么多索引,我也不想的,我也決定不了) 索引的屬性 background 為 true 是否可以認為當用索引的時候,如果這條數據索引沒有建立完畢就查詢不到?
查看完整描述

1 回答

?
開滿天機

TA貢獻1786條經驗 獲得超13個贊

需要看一下執行計劃:

db.<表>.explain(true).count(<條件>);

從中可以了解到count時是否可以用到索引,用到哪條索引。
{background: true}的索引只是在初次創建時不阻塞前臺線程,并不是指異步創建索引,所以不存在你說的問題。
可能性較大的是這9條索引中有一個或多個是部分索引,而執行計劃選中的是這個索引。可以查看索引配置:

db.<表>.getIndexes();

通常MongoDB不太可能選擇這樣的索引來count,所以也可能是特定版本的bug,希望看到你的服務端版本來確認:

db.serverBuildVersion();

綜上,我們需要看到:

  • 執行計劃

  • 9條索引的配置

  • MongoDB版本


查看完整回答
反對 回復 2018-09-03
  • 1 回答
  • 0 關注
  • 1327 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號