導航:首頁 > 編程語言 > javamongodb創建索引

javamongodb創建索引

發布時間:2022-08-09 19:14:37

『壹』 mongodb怎麼修改創建的索引查詢語言

簡答:沒法修改。
詳解:其實沒有完全看懂你的問題 -》 你沒有完全把問題說明白。
創建索引後,查詢索引,有多種方式,比如 MongoDB Compass的GUI界面中,mongo的shell中用命令建索引和查詢索引,代碼(python的pymongo中)建索引和查詢索引等。都是可以的。
但是你問的是 如何修改(索引的)查詢語言。只能回復你:無法修改。也無需修改。根據需要,選擇合適的語言(Python等)去,建索引,查索引,即可。
總之,請把問題說清楚,否則別人沒法回答你。

『貳』 mongo資料庫是怎麼創建索引

2種方式:

(1)mongo shell

db.yourCollectionName.createIndex({fieldName: 1})

舉例:

db.gameShortLink.createIndex({shortLink: 1})

(2)pymongo代碼

indexKeyList = [

("fieldName", pymongo.ASCENDING),

]

mongoCollection.create_index(indexKeyList)

註:

一次性創建多個索引,舉例:

import pymongo

from pymongo import IndexModel

# from pymongo import ASCENDING, DESCENDING

indexShortLink = IndexModel([("shortLink", pymongo.ASCENDING)], name="shortLink")

indexIsParseOk = IndexModel([("parsedLink.isParseOk", pymongo.ASCENDING)], name="parsedLink_isParseOk")

indexErrType = IndexModel([("parsedLink.errType", pymongo.ASCENDING)], name="parsedLink_errType")

indexRealGameName = IndexModel([("parsedGame.realGameName", pymongo.ASCENDING)], name="parsedGame_realGameName")

indexGameTheme = IndexModel([("parsedGame.gameTheme", pymongo.ASCENDING)], name="parsedGame_gameTheme")

indexModelList = [

indexShortLink,

indexIsParseOk,

indexErrType,

indexRealGameName,

indexGameTheme,

]

mongoCollectionShortlink.create_indexes(indexModelList)




詳見:(網路搜)

【已解決】用mongo的shell給MongoDB創建索引以提高查詢速度

【已解決】PyMongo中如何一次性創建多個index索引

『叄』 mongodb java 在沒有插入數據之前可以創建索引嗎

把bson數據文件restore到另一個DB時,需要注意:不能先創建索引再restore數據,否則性能極差,mongorestore工具默認會在restore完數據時,根據mp出來的index信息創建索引,無須自己創建,如果是要更換索引,也應該在數據入庫完之後再創建。

『肆』 mongodb 倒排索引怎樣建立

對於索引prefix的欄位而言,不管是索引是正序還是倒序,排序是正序需求還是倒序需求,都可以使用到Index索引來避免排序對於非索引prefix的欄位,無法利用其來避免排序,IXSCAN完還需要SORT。

『伍』 mongodb 不確定查詢那個欄位怎麼建立索引

方案 #1: 基於鍵值對的復合索引

讓我們先從schema的設計出發,利用JSON通過使用列表來存儲所有的屬性:

{
_id: 123,
props: [
{ n: "firstName", v: "John"},
{ n: "lastName", v: "Smith"},
{ n: "age", v: 25},
...
]
}
這里創建的索引是一個基於name和value欄位的復合索引。讓我們創建數百萬個包含了值為0至100的隨機數值的偽造屬性的文檔。

> for (var i = 0; i < 5000000; ++i) { var arr = []; for (var j = 0; j < 10; ++j) {
arr.push({n: "prop" + j, v: Math.floor(Math.random() * 1000) }) };
db.generic.insert({props: arr}) }
> db.generic.findOne()
{
"_id": ObjectId("515dd3b4f0bd676b816aa9b0"),
"props": [
{
"n": "prop0",
"v": 40
},
{
"n": "prop1",
"v": 198
},
...
{
"n": "prop9",
"v": 652
}
]
}
> db.generic.ensureIndex({"props.n": 1, "props.v": 1})
> db.generic.stats()
{
"ns": "test.generic",
"count": 5020473,
"size": 1847534064,
"avgObjSize": 368,
"storageSize": 2600636416,
"numExtents": 19,
"nindexes": 2,
"lastExtentSize": 680280064,
"paddingFactor": 1,
"systemFlags": 1,
"userFlags": 0,
"totalIndexSize": 1785352240,
"indexSizes": {
"_id_": 162898624,
"props.n_1_props.v_1": 16

『陸』 mongodb 每次都要創建索引嗎

mongodb在前台直接運行建立索引命令的話,將造成整個資料庫阻塞,因此索引建議使用 background 的方式建立。但是這也會帶來一定的問題,在
2.6 版本之前,在 secondary server 中即使使用 background 方式建立索引,secondary 還是會以
foreground 方式建立索引,它導致 secondary 同樣引發資料庫阻塞問題。2.6 版本修復了這個 Bug,2.6 版之後使用
background 方式建立索引時,真正轉向後台運行了。
為了盡量降低建立索引對 MongoDB Server 的影響,有一種方法是把 MongoDB Server 轉換成 standalone 模式後建立。具體做法如下:
1.首先把 secondary server 停止,在取消 --replSet 參數,並且更改 MongoDB port 之後重新啟動 MongoDB,這時候 MongoDB 將進入 standalone 模式;
2.在 standalone 模式下運行命令 ensureIndex 建立索引,建議使用 foreground 方式運行;
3.建立索引完畢之後關閉 secondary server 按正常方式啟動;
4.根據上述 1~3 的步驟輪流為 secondary 建立索引,最後把 primary server 臨時轉換為 secondary server,同樣按 1~3 的方法建立索引,再把其轉換為 primary server。
這種方式還是比較麻煩的,但可以把建立索引操作對 MongoDB 的影響降到最低,在有些情況下還是值得做的。

『柒』 mongodb新插入數據時需要重新建索引嗎

1. 索引的創建
mongodb採用ensureIndex來創建索引,如:
db.user.ensureIndex({"name":1})
表示在user集合的name鍵創建一個索引,這里的1表示索引創建的方向,可以取值為1和-1
在這裡面,我們沒有給索引取名字,mongodb會為我們取一個默認的名字,規則為keyname1_dir1_keyname2_dir2...keynameN_dirN
keyname表示鍵名,dir表示索引的方向,例如,上面的例子我們創建的索引名字就是name_1

索引還可以創建在多個鍵上,也就是聯合索引,如:
> db.user.ensureIndex({"name":1,"age":1})
這樣就創建了name和age的聯合索引

除了讓mongodb默認索引的名字外,我們還可以去一個方便記的名字,方法就是為ensureIndex指定name的值,如:
> db.user.ensureIndex({"name":1},{"name":"IX_name"})
這樣,我們創建的索引的名字就叫IX_name了

2. 唯一索引
與RDB類似,我們也可以定義唯一索引,方法就是指定unique鍵位true:
>db.user.ensureIndex({"name":1},{"unique":true})

3.查看我們建立的索引
索引的信息存在每個資料庫的system.indexes集合裡面,對這個集合只能有ensureIndex和dropIndexes進行修改,不能手動插入或修改集合。
通過> db.system.indexes.find()可以找到資料庫中多有的索引:
> db.system.indexes.find()
{ "v" : 1, "key" : { "_id" : 1 }, "ns" : "test.entities", "name" : "_id_" }
{ "v" : 1, "key" : { "_id" : 1 }, "ns" : "test.blog", "name" : "_id_" }
{ "v" : 1, "key" : { "_id" : 1 }, "ns" : "test.authors", "name" : "_id_" }
{ "v" : 1, "key" : { "_id" : 1 }, "ns" : "test.papers", "name" : "_id_" }
{ "v" : 1, "key" : { "_id" : 1 }, "ns" : "test.analytics", "name" : "_id_" }
{ "v" : 1, "key" : { "_id" : 1 }, "ns" : "test.user", "name" : "_id_" }
{ "v" : 1, "key" : { "_id" : 1 }, "ns" : "test.food", "name" : "_id_" }
{ "v" : 1, "key" : { "_id" : 1 }, "ns" : "test.user.info", "name" : "_id_" }
{ "v" : 1, "key" : { "_id" : 1 }, "ns" : "test.userinfo", "name" : "_id_" }
{ "v" : 1, "key" : { "name" : 1 }, "ns" : "test.user", "name" : "IX_name" }

4.刪除索引
如果索引沒有用了,可以使用dropIndexes將其刪掉:
> db.runCommand({"dropIndexes":"user","index":"IX_name"})
{ "nIndexesWas" : 2, "ok" : 1 }
ok表示刪除成功

『捌』 請教mongodb建立索引,time後的1是啥意思

1 為指定按升序創建索引,如果你想按降序來創建索引指定為 -1 即可

閱讀全文

與javamongodb創建索引相關的資料

熱點內容
溯源碼有分國家認證的嗎 瀏覽:210
如何通過app查詢產檢報告 瀏覽:938
拉結爾安卓手機怎麼用 瀏覽:695
驅動級進程代理源碼 瀏覽:782
androidshape畫線 瀏覽:510
程序員想辭職被拒絕 瀏覽:101
java面試邏輯 瀏覽:749
如何下載全英文app 瀏覽:724
js函數式編程指南 瀏覽:380
為什麼安卓手機相機啟動會卡 瀏覽:341
python中t是什麼意思 瀏覽:765
移動硬碟內存加密 瀏覽:407
單片機測角度 瀏覽:864
URL伺服器地址怎麼填 瀏覽:438
壓縮餅干會導致血糖高嗎 瀏覽:569
cad中xc命令怎麼用 瀏覽:424
戴爾伺服器怎麼看網卡介面 瀏覽:823
鹽鐵論pdf 瀏覽:424
最短路徑的生成演算法可用 瀏覽:457
蘋果備忘錄怎麼不能加密了 瀏覽:626