Mongodb如何使用killCursors停止運(yùn)行的cursor
cursor指向查詢結(jié)果的游標(biāo),通過游標(biāo)向下移動(dòng),獲得下一條查詢結(jié)果。MongoDB分批向用戶返回?cái)?shù)據(jù)結(jié)果。通過游標(biāo)的移動(dòng), mongodb確定當(dāng)前返回結(jié)果的位置,是否要加載更多數(shù)據(jù)到內(nèi)存當(dāng)中。cursor有默認(rèn)的超時(shí)時(shí)間, 超時(shí)后cursor會(huì)自動(dòng)停止。當(dāng)然,用戶也可以手動(dòng)使用killCursors命令,停止未完成的cursor.
killCursors功能
停止指定的游標(biāo)或某個(gè)集合的游標(biāo)。
各種Mongodb連接工具,基于killCursors命令,實(shí)現(xiàn)游標(biāo)的部分操作。應(yīng)用程序中,通常應(yīng)用不會(huì)直接調(diào)用killCursors命令,而是數(shù)據(jù)庫管理或開發(fā)人員,來運(yùn)行killCurors命令,停止掉對(duì)數(shù)據(jù)庫性能產(chǎn)生影響或長(zhǎng)時(shí)間運(yùn)行的cursor。
為了減少影響,降低風(fēng)險(xiǎn),執(zhí)行killCursors命令必須在當(dāng)前集合所在的數(shù)據(jù)庫中執(zhí)行。
語法
db.runCommand({ killCursors: <collection>, cursors: [<cursor id1>, ...], comment: <any> })
其中,使用killCursors指定本次操作針對(duì)的集合名稱。 字段cursors包含cursor id數(shù)組。comment是可選字段,用戶對(duì)本次操作的一些備注和說明??梢允荁SON類型中的任何一種數(shù)據(jù)類型。添加備注說明時(shí),可以在下面的三個(gè)位置查看
- Mongodb日志中,attr.command.cursor.comment字段
- Database profile輸出的command.comment字段
- currentOp輸出的command.comment字段
用戶權(quán)限
使用killCursors時(shí),用戶需要擁有相應(yīng)的權(quán)限。
- 4.2及以后得版本,當(dāng)前用戶有權(quán)限停止自己創(chuàng)建的游標(biāo)。當(dāng)用戶使用查詢語句創(chuàng)建游標(biāo)時(shí),游標(biāo)即與當(dāng)前用戶建立關(guān)聯(lián)關(guān)系
- 4.0及以前版本,用戶需要有killCursors權(quán)限,才能停掉自己創(chuàng)建的游標(biāo)。同樣,與4.2版本想用,用戶使用查詢語句創(chuàng)建游標(biāo)時(shí),游標(biāo)即與當(dāng)前用戶建立關(guān)聯(lián)關(guān)系。
停止其他用戶創(chuàng)建的游標(biāo)
用戶需要有killAnyCursor權(quán)限
應(yīng)用舉例
創(chuàng)建游標(biāo)
use test db.runCommand({ find: "resturants", filter: {stars: 5}, projection: { name:1, rating: 1, address:1 }, sort: { name: 1}, batchSize: 5 }) //返回 { "waitedMS" : NumberLong(0), "cursor" : { "firstBatch" : [{ "_id" : ObjectId("57506d63f578028074723dfd"), "name" : "Cakes and more" },{ "_id" : ObjectId("57506d63f578028074723e0b"), "name" : "Pies and things" },{ "_id" : ObjectId("57506d63f578028074723e1d"), "name" : "Ice Cream Parlour" },{ "_id" : ObjectId("57506d63f578028074723e65"), "name" : "Cream Puffs" },{ "_id" : ObjectId("57506d63f578028074723e66"), "name" : "Cakes and Rolls" }], "id" : NumberLong("18314637080"), "ns" : "test.restaurants" }, "ok" : 1 }
使用killCursors停止游標(biāo)
use test db.runCommand({ killCusors: "restaurants", cusors: [NumberLong("18314637080")] })
到此這篇關(guān)于Mongodb使用killCursors停止運(yùn)行的cursor的文章就介紹到這了,更多相關(guān)Mongodb使用killCursors停止運(yùn)行的cursor內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
利用golang驅(qū)動(dòng)操作MongoDB數(shù)據(jù)庫的步驟
這篇文章主要給大家介紹了關(guān)于如何利用golang驅(qū)動(dòng)操作MongoDB數(shù)據(jù)庫的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11mongodb中根據(jù)時(shí)間過濾進(jìn)行查詢的操作方法
這篇文章主要介紹了mongodb中簡(jiǎn)單的根據(jù)時(shí)間過濾進(jìn)行查詢,文末補(bǔ)充介紹了如何根據(jù)日期過濾/查找MongoDB中的記錄,結(jié)合實(shí)例給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-05-05mongodb增刪改查詳解_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要介紹了mongodb增刪改查詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-08-08MongoDB中的主從同步配置和mongod相關(guān)啟動(dòng)命令講解
這篇文章主要介紹了MongoDB中的主從同步配置和mongod相關(guān)啟動(dòng)命令講解,文中也羅列了很多其他常用的mongod命令參數(shù),需要的朋友可以參考下2016-03-03MongoDB按時(shí)間分組操作實(shí)戰(zhàn)
MongoDB支持使用聚合操作來統(tǒng)計(jì)數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于MongoDB按時(shí)間分組操作的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-05-05MongoDB分片在部署與維護(hù)管理中常見的事項(xiàng)總結(jié)大全
分片(sharding)是指將數(shù)據(jù)拆分,將其分散存放在不同的機(jī)器上的過程。下面這篇文章主要給大家總結(jié)介紹了關(guān)于MongoDB分片在部署與維護(hù)管理中常見事項(xiàng)的相關(guān)資料,文中通過圖文以及示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2018-09-09MongoDB的mongo shell常用操作方法及操作腳本筆記
mongo shell即相當(dāng)于SQL語句在關(guān)系型數(shù)據(jù)庫中的作用,MongoDB使用JavaScript作為shell操作命令,這里我們就來整理MongoDB的mongo shell常用操作方法及操作腳本筆記2016-07-07