python, python3.
先從數(shù)據(jù)庫(kù)中取得所有數(shù)據(jù) db['test'].find({},{_id:0}),然后對(duì)結(jié)果進(jìn)行for循環(huán)
demos = db['demo'].find({},{"_id": 0})
for cursor in demos:
? ? ? ? ?do_something()
但是當(dāng)do_something函數(shù)耗時(shí)過(guò)長(zhǎng),在cursor上長(zhǎng)時(shí)間沒(méi)有進(jìn)行操作,引發(fā)cursor在mongodb服務(wù)端超時(shí)
解決方案
1、設(shè)置no_cursor_timeout = True,永不超時(shí),游標(biāo)連接不會(huì)主動(dòng)關(guān)閉,需要手動(dòng)關(guān)閉
demos = db['demo'].find({},{"_id": 0},no_cursor_timeout = True)
for cursor in demos:
? ? ? ? do_something()
demo.close() # 關(guān)閉游標(biāo)
2、設(shè)置batch_size返回文檔數(shù),默認(rèn)應(yīng)該是20個(gè)文檔(記不清了233333),可以設(shè)置小一些
#每次只返回一個(gè)文檔
demos = db['demo'].find({},{"_id": 0}).batch_size(1)
for cursor in demos:
? ? ? ? do_something()
注意:這種方法仍然會(huì)出現(xiàn)可能超過(guò)10分鐘任然沒(méi)有返回,比如你在do_something里進(jìn)行一些十分耗時(shí)的操作,具體采用哪種方法按實(shí)際情況而定.
mongodb條件操作符,"$lt", "$lte", "$gt", "$gte", "$ne"就是全部的比較操作符,
對(duì)應(yīng)于 "<", "<=", ">", ">=", "!="。
原子操作符:"$and“, "$or“, "$nor“。
【2】:
db.runCommand(
{
distinct:"sofang_xinfang",key:"city"
}
) ---distinct 找出 city 字段一共多少種 ?
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。