1. 程式人生 > >mongodb 根據主鍵id 刪除資料

mongodb 根據主鍵id 刪除資料

命令列連結

[[email protected] ~]$ mongo
MongoDB shell version: 1.8.1
connecting to: test  預設是test db
>

> use logs    //切換db 為logs
switched to db logs
>

由於mongodb 開啟了驗證授權 不經過驗證是無法執行的,比如我們查一下 db的狀態

> db.stats()
{
        "assertion" : "unauthorized db:logs lock type:-1 client:127.0.0.1",
        "assertionCode" : 10057,
        "errmsg" : "db assertion failure",
        "ok" : 0
}
>
系統提示當前預設的帳號沒有對此db的操作許可權。所以接下來我們要授權和切換mongodb的登入帳號,授權和登入是同一時間完成的,命令如下

> db.auth('hyuser','hylog');
1   //此處系統返回狀態為1.說明授權通過 併成功切換成使用者 hyuser。 否則為0
>
 現在我們再查詢db狀態 是ok的。如下。

> db.stats()
{
        "db" : "logs",
        "collections" : 5,
        "objects" : 129858100,
        "avgObjSize" : 231.78011497164982,
        "dataSize" : 30098525348,
        "storageSize" : 33372166496,
        "numExtents" : 50,
        "indexes" : 12,
        "indexSize" : 75387239696,
        "fileSize" : 133012914176,
        "ok" : 1
}
>
接下來要做的就是刪除那些髒資料,因為那些髒資料無明顯特徵和定位,還好開發初期在頁面上對每條資料都取出了 唯一的id  hidden在web頁面,通過檢視原始碼我可以清楚的找到這條資料的唯一標識。

刪除 id為4f29e4860b2e2ecb9910e304 的資料,操作

> db.logs.remove({'_id':ObjectId('4f29e4860b2e2ecb9910e304')})
>
成功刪除。

不少剛接觸mongodb的朋友 在刪除的時候會用到這種錯誤的方式刪除

> db.logs.remove(‘_id’,'dfsdfsdfsdfsdfsdfsdfsdfsd');

這中方式是無法刪除的,因為 mongodb的唯一id 不是作為一個字串來儲存的。,這個值通常是一個BSON物件id,因此,這個id對於集合中的每個成員都是唯一的,如果使用者插入一個document沒有提供一個id,資料庫將自動生成一個id,並存儲在_id欄位。   

一個BSON ObjectID是由12個位元組組成:4位元組時間+3位元組機器id+2位元組程序id+3位元組的數字
"_id" : ObjectId("4c691e72ed2a47b462dfa806") }




相關推薦

mongodb 根據id 刪除資料

命令列連結 [[email protected] ~]$ mongo MongoDB shell version: 1.8.1 connecting to: test  預設是test db > > use logs    //切換db 為logs s

批量修改資料根據Id 批量修改欄位Value的值 且 value 的值是不一樣。

批量修改資料 要根據主鍵Id 批量修改欄位Value的值 且 value 的值是不一樣。 UPDATE gold_chip set chip_money_win=(case     when chip_id = 1 then 1    

【TP5】根據ID進行多條資料查詢

author:咔咔 wechat:fangkangfk   資料庫設計 案例:   需求:根據專題ID查詢廣告圖ID,然後拿著這個ID去banner模型裡邊進行獲取資料   分解:這個業務需求需要做倆件事,第一件事就是根據專題i

mybatis插入自增ID資料後返回自增的ID

開發中碰到使用者註冊的功能需要用到使用者ID,但是使用者ID是資料庫自增生成的,這種情況上網查詢後使用下面的方式配置mybatis的insert語句可以解決  <insert id="insert" keyProperty="id" useGeneratedKeys=

刪除資料表中的資料id 從1開始自增

一、方法1 清空表資料並且將主鍵自增長從1開始 步驟①先清空表資料 步驟②在把表的自增長設定為1 Sql語句:  DELETE FROM grade; ALTER TABLE grade AUTO_INCREMENT=1;   二、方法2

mybatis 插入資料返回id寫法

1、batis檔案中寫法: <!--插入資料,返回主鍵的insert寫法 -->     <insert id="insert_A"    parameterType="Map" useGeneratedKeys="t

Navicat操作Oracle、JPA註解實現Oracle插入資料 ID自增

首先在Oracle表中實現ID自增,其次在JPA中實現。 Oracle資料庫不存在主鍵自增選項,現在想實現ID自增。 部落格連結:oracle 實現插入自增列   開啟Navicat,定位到自己建立的表。 一、 建立序列 其他-序列&

(六)Mybatis插入資料返回id

整個demo放在Github上,地址:【https://github.com/Damaer/Mybatis-Learning】,專案是mybatis-05-CRUD,下載下來只需要maven環境以及mysql環境就可以跑起來,所以不貼全部程式碼。 我們知道很多時候我們有

mybatis 事務下獲取insert資料[id]的值

現在有一個需求:表A 表B的資料,需要在同一個事務中操作。表A bid儲存的是表B的id。 表A:id[主鍵] , name  , bid[表B的主鍵] 表B:id[主鍵] , name  就是先

Mybatis中,當插入資料後,返回最新id的幾種方法,及具體用法

                一、前言                                     資料庫操作怎能少了INSERT操作呢?下面記錄MyBatis關於INSERT操作的筆記,以便日後查閱。二、 insert元素 屬性詳解                              其

用註解的方式實現Mybatis插入資料時返回自增的Id

一、背景 我們在資料庫表設計的時候,一般都會在表中設計一個自增的id作為表的主鍵。這個id也會關聯到其它表的外來鍵。 這就要求往表中插入資料時能返回表的自增id,用這個ID去給關聯表的欄位賦值。下面講一下如何通過註解的方式實現插入資料時返回自增Id。 二、

Oracle12C--外來約束刪除資料問題--級聯操作(九)

知識點的梳理: on delete cascade:當主表資料刪除時,對應的子表資料同時刪除; on delete set null:當主表資料刪除時,對應的子表資料設定為null; 問題1:刪除

Oracle 在插入資料後獲取ID的解決辦法

Mybatis批量插入返回自增主鍵:  對於支援生成自增主鍵的資料庫:useGenerateKeys和keyProperty 不支援生成自增主鍵的資料庫:<selectKey> 1、Oracle資料庫中建立自增序列 create sequence ARCHI

mybatis獲取插入資料時自動生成的id

mapper檔案: void insert(Map<String, Object> params); mybatis的xml如下: <insert id="insert" parameterType="java.util.Map" useGen

[轉帖]如何準確高效的獲取資料庫新插入資料id

原文地址 例如我們新建了一張表UserInformation,欄位如下Id,為主鍵,自增,其它欄位Name,Pwd,Email 然後我們來執行一個新增插入操作: insert into UserInformation(Name,Pwd,Email) values('小明','123','111') 我

Mybatis插入資料後返回id

有時候使用mybatis插入資料後,需要用到記錄在資料庫中的自增id,可以利用keyProperty來返回,賦值給實體類中的指定欄位。 單條記錄插入並返回 First, if your database supports auto-generated key fields (e.g. MySQL and SQ

Java程式碼TkMyBatis通用Mapper中新增資料時同時獲取自增ID,與適用uuid 做主時獲取 id

一 . MyBatis mapper.xml檔案中在xml    1.   加入 這句 :useGeneratedKeys="true" keyProperty="ID"        keyProperty="資料庫中的主鍵欄位名對應的實體類欄位名" ;【填實體類欄位

mybatis mysql 插入物件返回資料id

RuleTypeMapper.xml 檔案原始碼 <insert id="insertRuleType" useGeneratedKeys="true" keyProperty="id" parameterType="com.haier.gsp.core.mo

MySql自增id插入失敗或刪除後,再插入亂序問題

在對資料庫進行操作的時候,資料庫的表裡的id是自增的,當資料被刪除或者新增或者插入失敗時,id會一直增上去,變得很亂,不會按照順序,下面是兩種解決辦法: alter table tablename drop column id; alter table tablenam

巧妙解決mysql刪除或新增記錄時,對自增ID進行重新排序的問題

一、問題描述 表一 id 姓名 1 張三 2 李四 表二(當刪除第一條記錄時,顯示為表二) id 姓名 2 李四 表三(如何使表顯示為表三,即實現對錶中的id欄位重新排序) id 姓名 1 李四 二、問題解決 原理:重新定義一個變數用來顯示錶中的序列號 echo "<