1. 程式人生 > >Mongodb 欄位型別轉換

Mongodb 欄位型別轉換

原文傳送門

最近一些專案由於歷史原因,欄位型別儲存混亂,比如一個collection裡modifedDate列,有的存的是ISODate型別,有的是NumberLong時間戳,這在Mongodb中是嚴重不推薦的,需要轉換成統一的。Mongodb並不提供Alter table這樣的語句或者工具,只能寫程式轉。

      Mongodb的客戶端是js寫的,其實用js寫指令碼就可以實現。
      以上面的例子來說,要將ISODate型別全都轉換為NumberLong時間戳:
      1、查詢多少記錄是ISODate型別
      ①、$type

  1. db.table_name.find({modifedDate:
    {$type:9}}).count()
      其中的9是Mongodb定義的BSON Date型別對應的數字。下面這張表是BSON TYPE及他們對應的數字。
 ②、forEach函式和instanceof

  1. count=0;
  2. db.table_name.find().forEach(function(x){if(x.modifedDate instanceof Date){count++}});
  3. print(count);
      2、修改型別
      使用forEach函式

  1. db.table_name.find({modifedDate:{$type:9}}).forEach(
    function(x){x.modifiedDate=NumberLong(x.modifiedDate.getTime()/1000);db.table_name.save(x)})

相關推薦

Mongodb 型別轉換

原文傳送門 最近一些專案由於歷史原因,欄位型別儲存混亂,比如一個collection裡modifedDate列,有的存的是ISODate型別,有的是NumberLong時間戳,這在Mongodb中是嚴重不推薦的,需要轉換成統一的。Mongodb並不提供Alter table

使用astype實現dataframe型別轉換

在有些情況下,我們需要在DataFrame型別的資料中通過切片獲得我們所需要的資料,然後轉換為我們所需要的型別。Dataframe資料型別的轉換需要用到astype函式。 # encoding: utf-8 import pandas as pd df

Logstash下以及巢狀Json型別轉換

  前言 從filebeat傳輸到Logstash的資料,某個欄位需要由string型別裝換成float型別。但是不管怎麼改logstash的配置檔案都不生效,其實官方文件都有,但是具體細節方面的東西就得自己不斷的實踐驗證最後達到自己想要的目標了。整整一天,都在弄這一個,中間實在想放棄了。但是就如張

mongo 批量轉換型別的方法

引:由於專案前期開發的人沒規劃好,導致功能上業務邏輯的阻塞,現記錄下mongo如何批量轉換資料型別 函式解析 1.要先查詢出需要修改的欄位型別,不然直接轉換,如果資料表比較混亂,會導致轉換報錯 2.print 可以在mongo shell中 輸出引數 $type 有效的型別值,如下:

Java JDBC中,MySQL型別到JAVA型別轉換

1. 概述   在使用Java JDBC時,你是否有過這樣的疑問:MySQL裡的資料型別到底該選擇哪種Java型別與之對應?本篇將為你揭開這個答案。 2. 型別對映    java.sql.Types定義了常用資料庫(MySQL、Oracle、DB2等)所用到的資料型別

laravel-mongodb查詢條件與型別不一致問題

因為PHP是弱型別語言,最常見的不一致的情況應該是整型與字串。 例如,當mongodb表的主鍵為NumberLong型別,如下的程式碼查詢不到結果 $id = '4476850'; $row = M

oracle的型別限制

CHAR   ORACLE限制  2000 VARCHAR2   ORACLE限制   4000 LONG          32,767位元組 CLOB

sqlserver 獲取所有表的型別等資訊

USE [MultipleAnalysisDataFY] GO /****** Object: View [dbo].[selectfieldtype] Script Date: 2018/11/7 星期三 12:02:27 ******/ SET ANSI_NULLS ON GO SET

Oracle varchar2改成大型別clob

做專案中經常碰到資料庫改欄位問題,給自己做個記錄,下次直接可以拿來用了。Oracle 有些欄位直接修改會報錯ORA-22858: invalid alteration of datatype。不允許修改。不允許修改怎麼辦呢。。總不能把表幹掉重新建欄位吧。這在生產肯定行不通。可以先建個新欄

Oracle與mysql的型別整理

Oralce的欄位型別整理如下: Mysql的欄位型別整理如下: 最後面一欄是對應JAVA的基本型別。希望對初學者有用,初學者在學習JAVA的時候,不知道怎麼把JAVA的物件指向到ORALCE或者MYSQL的欄位中,通過這個表格 可以很清楚的瞭解到,物件對映成資

潭州課堂25班:Ph201805201 django框架 第七課 常用 型別及引數,關係表的實現,表關係物件add,create的方法 (課堂筆記)

    寫個類,建立表格   執行命令生成檔案 提交,在資料庫中建立  進入資料庫檢視   對資料進行修改操作    只有用到 save() 才能觸發 updaer_time 的更改,

spring data jpa 查詢自定義轉換為自定義實體

目標:查詢資料庫中的欄位,然後轉換成 JSON 格式的資料,返回前臺。 環境:idea 2016.3.4, jdk 1.8, mysql 5.6, spring-boot 1.5.2 背景:首先建立 entity 對映資料庫(非專業 java 不知道這怎麼說) @Entity @Tab

ES Mapping、型別Field type詳解

  欄位型別概述 一級分類 二級分類 具體型別 核心型別 字串型別 string,text,keyword 整數型別 integer,long,short,byte 浮點型別 double,float,half_float,scaled_float 邏輯型別 boolean 日期型

關於mysql型別的說明

mysql中整數型別後面的數字,是不是指定這個欄位的長度?比如int(11),11代表11個位元組嗎? 原先對mysql不太理解,但也沒有報錯。但理解的不夠深入。這次補上。 原來以為int(11)是指11個位元組,int(10)就是10個位元組。我錯了。   http://

Oracle更改型別

當一個列名(欄位)下有資料的時候無法直接更改列名的型別,這時可以用以下方法: 1、修改原欄位名name為name_tmp alter table tb rename column name to name_tmp; 2、增加一個和原欄位名同名的欄位name alter table t

資料庫工作筆記010---Mysql中用SQL增加、刪除,修改名、型別、註釋,調整順序總結

  JAVA技術交流QQ群:170933152   Mysql中用SQL增加、刪除欄位,修改欄位名、欄位型別、註釋,調整欄位順序總結   在網站重構中,通常會進行資料結構的修改,所以新增,刪除,增加mysql表的欄位是難免的,有時為了方便,還會增加

mybatis 型別Data相

在專案中查詢時間段的sql語句(時間型別為datetime或date)(資料庫中的時間型別): <if test="beginTime!=null and beginTime!=''"> <![CDATA[ and DATE_FORMAT(tr.add_time, '%Y

MongoDB刪除

欄位刪除 使用update命令,update命令格式: db.collection.update(criteria,objNew,upsert,multi) 引數說明: criteria:查詢條件。 objNew:update物件和一些更新操作符。 up

型別與合理的選擇型別

欄位型別 數值 MySQL 的數值資料型別可以大致劃分為兩個類別,一個是整數,另一個是浮點數或小數。許多不同的子型別對這些類別中的每一個都是可用的,每個子型別支援不同大小的資料,並且 MySQL 允許我們指定數值欄位中的值是否有正負之分(UNSIGNED)或者用零填補(ZEROFILL)。 INT

django 常用型別

  <1> CharField #字串欄位, 用於較短的字串. #CharField 要求必須有一個引數 maxlength, 用於從資料庫層和Django校驗層限制該欄位所允許的最大字元數. <2> IntegerField