下載吧 - 綠色安全的游戲和軟件下載中心

          軟件下載吧

          當前位置:軟件下載吧 > 數據庫 > DB2 > mongo數據集合屬性中存在點號(.)的解決方法

          mongo數據集合屬性中存在點號(.)的解決方法

          時間:2024-02-24 17:17作者:下載吧人氣:24

          前言

          MongoDB是面向集合存儲的文檔型數據庫,其涉及到的基本概念與關系型數據庫比有所不同。本文主要介紹關于mongo數據集合屬性存在點號(.)的相關內容,下面話不多說了,來一起看看詳細的介紹吧

          基本知識點:

          1.似乎mongo3.6之前不允許插入帶點(.)或美元符號($)的鍵,但是當我使用mongoimport工具導入包含點的JSON文件時,它工作正常。

          2.在使用spring-data-mongodb處理mongodb的增刪改查時會通過一個MappingMongoConverter(Document和Modle轉換類)轉換數據

          3.具體對點號的轉換在DBObjectAccessor(spring-data-mongodb-1.10.13)或者DocumentAccessor(spring-data-mongodb-2.0.9),如下:

          //插入時轉換
          public void put(MongoPersistentProperty prop, Object value) {
          Assert.notNull(prop, “MongoPersistentProperty must not be null!”);
          String fieldName = prop.getFieldName();
          if (!fieldName.contains(“.”)) {
          dbObject.put(fieldName, value);
          return;
          }
          Iterator<String> parts = Arrays.asList(fieldName.split(“\.”)).iterator();
          DBObject dbObject = this.dbObject;
          while (parts.hasNext()) {
          String part = parts.next();
          if (parts.hasNext()) {
          dbObject = getOrCreateNestedDbObject(part, dbObject);
          } else {
          dbObject.put(part, value);
          }
          }
          }

          //查詢時轉換
          public Object get(MongoPersistentProperty property) {
          String fieldName = property.getFieldName();
          if (!fieldName.contains(“.”)) {
          return this.dbObject.get(fieldName);
          }
          Iterator<String> parts = Arrays.asList(fieldName.split(“\.”)).iterator();
          Map<String, Object> source = this.dbObject;
          Object result = null;
          while (source != null && parts.hasNext()) {
          result = source.get(parts.next());
          if (parts.hasNext()) {
          source = getAsMap(result);
          }
          }
          return result;
          }

          //判斷值是否為空
          public boolean hasValue(MongoPersistentProperty property) {
          Assert.notNull(property, “Property must not be null!”);
          String fieldName = property.getFieldName();
          if (!fieldName.contains(“.”)) {
          return this.dbObject.containsField(fieldName);
          }
          String[] parts = fieldName.split(“\.”);
          Map<String, Object> source = this.dbObject;
          Object result = null;
          for (int i = 1; i < parts.length; i++) {
          result = source.get(parts[i – 1]);
          source = getAsMap(result);
          if (source == null) {
          return false;
          }
          }
          return source.containsKey(parts[parts.length – 1]);
          }

          標簽mongo,數據,集合,屬性,存在,點號,解決,方法

          相關下載

          查看所有評論+

          網友評論

          網友
          您的評論需要經過審核才能顯示

          熱門閱覽

          最新排行

          公眾號

          主站蜘蛛池模板: 久久久精品人妻一区亚美研究所| 中文字幕久久亚洲一区| 国产在线精品一区免费香蕉| 精品一区高潮喷吹在线播放| 久久一区二区三区免费播放| 国产精品亚洲高清一区二区| 无码人妻精品一区二区蜜桃| 亚洲av福利无码无一区二区| 国产精品视频一区| 曰韩人妻无码一区二区三区综合部| 日韩久久精品一区二区三区 | 日韩亚洲一区二区三区| 国产99精品一区二区三区免费| 亚洲国产精品一区二区成人片国内| 不卡无码人妻一区三区音频| 老湿机一区午夜精品免费福利| 久久精品一区二区免费看| 国产精品无码一区二区三区电影 | 国产在线一区观看| 精品国产亚洲第一区二区三区| 精品91一区二区三区| 国产一区二区三区不卡在线看 | 国产精品亚洲一区二区麻豆 | 能在线观看的一区二区三区| 国产在线精品一区二区夜色| 久久久国产一区二区三区| 中文字幕一区二区三区视频在线| 亚洲丰满熟女一区二区v| 日韩av无码一区二区三区| 性色av一区二区三区夜夜嗨| 亚洲AV午夜福利精品一区二区| 制服美女视频一区| 伦理一区二区三区| 成人区人妻精品一区二区三区 | 国产av夜夜欢一区二区三区| 视频一区视频二区在线观看| 国产精品成人免费一区二区| 无码8090精品久久一区| 日韩免费观看一区| 亚洲丰满熟女一区二区哦| 精品3d动漫视频一区在线观看|