1. 程式人生 > >mongodb 索引建立,查詢,刪除操作

mongodb 索引建立,查詢,刪除操作

一、索引介紹
索引通常能夠極大的提高查詢的效率,如果沒有索引,MongoDB在讀取資料時必須掃描集合中的每個檔案並選取那些符合查詢條件的記錄。
這種掃描全集合的查詢效率是非常低的,特別在處理大量的資料時,查詢可以要花費幾十秒甚至幾分鐘,這對網站的效能是非常致命的。
索引是特殊的資料結構,索引儲存在一個易於遍歷讀取的資料集合中,索引是對資料庫表中一列或多列的值進行排序的一種結構。
MongoDB 提供了多樣性的索引支援,索引資訊被儲存在system.indexes 中,且預設總是為_id建立索引,它的索引使用基本和MySQL 等關係型資料庫一樣。其實可以這樣說,索引是凌駕於資料儲存系統之上的另一層系統,所以各種結構迥異的儲存都有相同或相似的索引實現及使用介面並不足為奇。


首先需要連線到mongodb上:cd到mongodb目錄下的bin資料夾,執行命令./mongo 
> use admin
switched to db admin > db.auth("使用者名稱","密碼");
1
> use 資料庫名
switched to db 資料庫名

1.建立基礎索引:

語法結構如:>db.COLLECTION_NAME.ensureIndex({KEY:1})。
 說明:語法中 Key 值為你要建立的索引欄位,KEY後面的1 表示升序,-1 表示降序,是用1 還是用-1 主要是跟排序的時候或指定範圍內查詢的時候有關的。

當系統已有大量資料時,建立索引就是個非常耗時的活,我們可以在後臺執行,只需指定“backgroud:true”即可。

> db.t_user.ensureIndex({"consumerId":1},{backgroud:true})
{
        "createdCollectionAutomatically" : false,
        "numIndexesBefore" : 1,
        "numIndexesAfter" : 2,
        "ok" : 1
}

ensureIndex() 方法中你也可以設定使用多個欄位建立索引(關係型資料庫中稱作複合索引)。

>db.t_user.ensureIndex({"consumerId":1,"phone":-1})

ensureIndex() 接收可選引數,可選引數列表如下:

Parameter Type Description
background Boolean 建索引過程會阻塞其它資料庫操作,background可指定以後臺方式建立索引,即增加 "background" 可選引數。 "background" 預設值為false
unique Boolean 建立的索引是否唯一。指定為true建立唯一索引。預設值為false.
name string 索引的名稱。如果未指定,MongoDB的通過連線索引的欄位名和排序順序生成一個索引名稱。
dropDups Boolean 在建立唯一索引時是否刪除重複記錄,指定 true 建立唯一索引。預設值為 false.
sparse Boolean 對文件中不存在的欄位資料不啟用索引;這個引數需要特別注意,如果設定為true的話,在索引欄位中不會查詢出不包含對應欄位的文件.。預設值為 false.
expireAfterSeconds integer 指定一個以秒為單位的數值,完成 TTL設定,設定集合的生存時間。
v index version 索引的版本號。預設的索引版本取決於mongod建立索引時執行的版本。
weights document 索引權重值,數值在 1 到 99,999 之間,表示該索引相對於其他索引欄位的得分權重。
default_language string 對於文字索引,該引數決定了停用詞及詞幹和詞器的規則的列表。 預設為英語
language_override string 對於文字索引,該引數指定了包含在文件中的欄位名,語言覆蓋預設的language,預設值為 language.
2.查詢索引:
> db.t_user.getIndexes()
[
        {
                "v" : 2,
                "key" : {
                        "_id" : 1
                },
                "name" : "_id_",
                "ns" : "huangque.t_user"
        },
        {
                "v" : 2,
                "key" : {
                        "consumerId" : 1
                },
                "name" : "consumerId_1",
                "ns" : "huangque.t_user"

        }

]

3.刪除索引:

//刪除t_user表中的所有索引
>db.t_user.dropIndexes()
//刪除t_user表中的consumerId_1索引
> db.t_user.dropIndex("consumerId_1")

{ "nIndexesWas" : 2, "ok" : 1 }

4.查詢集合索引大小:

> db.t_user.totalIndexSize()

32768

如果你是湖南的 歡迎加入 湖南人在深圳-Java群:557651502

相關推薦

C#中對 XML節點進行新增刪除查詢刪除操作

從網上整理所得 XMLDocument來操作XML比較簡單,雖然有時效率不是很高。程式碼如下 已知有一個XML檔案(bookstore.xml)如下:   <?xml version="1.0" encoding="gb2312"?> <books

python使用sqlalchemy中介軟體對MYSQL資料庫進行建立查詢刪除操作

首先安裝sqlalchemy,安裝方法有兩種:通過官網下載原始碼進行安裝;使用pip install sqlachemly 1.建立操作資料庫介面模組api.py, 描述: 在介面模組中首先建立一個engine,這裡關聯的是mysql資料庫,也可以是其他型別的資料庫 然後定

mongodb 索引建立查詢刪除操作

一、索引介紹索引通常能夠極大的提高查詢的效率,如果沒有索引,MongoDB在讀取資料時必須掃描集合中的每個檔案並選取那些符合查詢條件的記錄。這種掃描全集合的查詢效率是非常低的,特別在處理大量的資料時,查詢可以要花費幾十秒甚至幾分鐘,這對網站的效能是非常致命的。索引是特殊的資

MongoDB建立表步驟Mongo常用的資料庫操作命令查詢新增更新刪除_MongoDB 效能監測

->use Admin         (切換到建立使用者) ->db.TestDb          (建立資料庫) ->db.addUser(“userName”,”Pwd”)    建立使用者 ->db.auth(“userName”,

Qt5.9Creator讀寫Mysql5.7.17資料庫詳細例子(資料庫基本操作建立查詢插入刪除修改)

本文章主要總結的內容是用Qt5.9Creator工程讀寫Mysql5.7.17資料庫。具體的操作步驟如下所述。   一、用Qt5.9的Creator建立一個Console工程,選擇MinGW32編譯器。   二、新增程式碼 2.1建立好工程後,在.pro檔案裡

使用PyMongo操作MongoDB的基本實踐(1)——刪除查詢更新

db.drop_collection("collection_name") 刪除整個collection import pymongo client = pymongo.MongoClient

二叉排序樹的基本操作建立中序遍歷查詢刪除插入)

分析: 二叉排序樹的操作的難點在於刪除操作,刪除操作時,只需要滿足二叉排序樹的性質即可,即需要找到要刪除結點p的左孩子的最右下方的數替代該結點的資料,然後刪除p->lchild的最右下方的結點即可。 對於p->lchild==NULL的,只需要讓雙親結點直接指向

二叉搜尋樹的建立 查詢 刪除操作...

#include <cstdlib> #include <iostream> using namespace std; typedef struct _NODE { int value; struct _NODE *left;

順序線性表的有關操作建立銷燬插入查詢刪除等)

#include<stdio.h>#include <cstdlib>//支援庫函式 #include<conio.h>#define MAXSIZE 100typedef struct{int *elem;int length;}SqLi

c語言:順序表的實現(一) 建立插入刪除查詢輸出等基本操作實現

#include<iostream> #include<stdio.h> #define LIST_INIT_SIZE 100 #define LIST_INCREMENT 10 using namespace std; struct Sqlist{

elasticsearch 5.x 系列之六 文檔索引更新查詢刪除流程

取數 獲取 info ast 負載均衡 blog img 選擇 將在 一、elasticsearch index 索引流程 步驟: 客戶端向Node1 發送索引文檔請求 Node1 根據文檔ID(_id字段)計算出該文檔應該屬於shard0,然後請求路由到Node3的P0分

Spring boot集成Redis(1)—進行增加更新查詢批量刪除操作

緩存 獲取數據 prope XML ray end 序列 www pin 前言:最近工作中使用到了redis緩存,故分享一點自己總結的東西,這篇文章使用的是StringRedisTemplate進行學習,這裏值的說的是,(1)StringRedisTemplate在進行批量

排序二叉樹的建立查詢刪除

因為排序二叉樹的有序性,建立與查詢都不是很難,唯一的難點是刪除結點的操作,刪除節點且要保證該樹仍為二叉樹且仍滿足有序的性質 二叉樹的刪除操作主要有三種情況: 所刪除的節點是葉子節點,這樣就可以先遍歷這個樹,然後找到需要刪除的節點,把它free掉就好 所刪除的節點只有一個左子結點,或者只有一個右子

二叉樹的建立查詢輸出先序中序 後序遍歷 具體操作

//註釋改日補上。。。 #include<iostream> #include<cstdio> #include<cstdlib> #include<malloc.h> using namespace std; typedef

AVL樹C++實現(插入刪除查詢清空遍歷操作

AVL.h檔案程式碼 #pragma once #include<iostream> #include<stack> #include <assert.h> using namespace std; using namespace std; template<cl

二叉搜尋樹的基本操作 ---- 插入刪除查詢銷燬遍歷

首先來看看二叉搜尋樹的概念 二叉搜尋樹又稱二叉排序樹,它或者是一棵空樹,或者是具有以下性質的二叉樹 若它的左子樹不為空,則左子樹上所有節點的值都小於根節點的值 若它的右子樹不為空,則右子樹上所有節點的值都大於根節點的值 它的左右子樹也分別為二叉搜尋樹

【資料結構】二叉搜尋樹的插入刪除查詢等基本操作的實現

1、基本概念 二叉搜尋樹:又稱二叉排序樹,它或者是一棵空樹,或者是具有以下性質的二叉樹 若它的左子樹不為空,則左子樹上所有節點的值都小於根節點的值 若它的右子樹不為空,則右子樹上所有節點的值都大於根節點的值 它的左右子樹也分別為二叉搜尋樹 沒有鍵值相等的節

學習筆記:B樹建立搜尋和刪除操作

#include <iostream> #include <queue> using namespace std; /****************************** PROGRAMER: Fanchenxin M階多路查詢樹: 1.定

JAVA對資料庫進行操作實現資料庫中資料的插入查詢更改刪除操作

轉載自:http://www.cnblogs.com/sodawoods-blogs/p/4415858.html (—)通過mysql workbench 建立一個數據庫,在這裡命名為company,然後建一個tb_employee表 (二)以下是java程式碼對錶

單鏈表的初始化建立插入查詢刪除

#include <stdio.h> #include <stdlib.h> typedef int ElemType; //定義結點型別 typedef struct Node {ElemType data; //單鏈表中的資料域 struct Node *next; //單鏈表