[mongo] 1.2 mongodb 數(shù)據(jù)庫和集合

      網(wǎng)友投稿 933 2025-03-31

      數(shù)據(jù)庫和集合


      參考:https://docs.mongodb.com/manual/core/databases-and-collections/

      概述

      MongoDB將數(shù)據(jù)記錄存儲為文檔?(特別是BSON文檔),這些文檔一起收集在集合中。一個?數(shù)據(jù)庫存儲一個或更多的文檔集合。

      數(shù)據(jù)庫

      在MongoDB中,數(shù)據(jù)庫包含一個或多個文檔集合。要選擇要使用的數(shù)據(jù)庫,使用use

      創(chuàng)建數(shù)據(jù)庫

      如果數(shù)據(jù)庫不存在,則在您第一次為該數(shù)據(jù)庫存儲數(shù)據(jù)時,MongoDB會創(chuàng)建該數(shù)據(jù)庫。這樣,您可以切換到不存在的數(shù)據(jù)庫并在mongoshell中執(zhí)行以下操作?:

      復(fù)制

      復(fù)制的

      use myNewDB

      db.myNewCollection1.insertOne( { x: 1 } )

      該 insertOne()操作將同時創(chuàng)建數(shù)據(jù)庫myNewDB和集合(myNewCollection1如果它們尚不存在)。確保數(shù)據(jù)庫名稱和集合名稱均遵循MongoDB命名限制。

      集合

      MongoDB將文檔存儲在集合中。集合類似于關(guān)系數(shù)據(jù)庫中的表。

      創(chuàng)建集合

      如果不存在集合,則在您第一次為該集合存儲數(shù)據(jù)時,MongoDB會創(chuàng)建該集合。

      復(fù)制

      復(fù)制的

      db.myNewCollection2.insertOne( { x: 1 } ) db.myNewCollection3.createIndex( { y: 1 } )

      如果insertOne()和?createIndex()操作都還不存在,則會創(chuàng)建它們各自的集合。確保集合名稱遵循MongoDB命名限制。

      Explicit Creation

      [mongo] 1.2 mongodb 數(shù)據(jù)庫和集合

      MongoDB提供了db.createCollection()使用各種選項(xiàng)顯式創(chuàng)建集合的方法,例如設(shè)置最大大小或文檔驗(yàn)證規(guī)則。如果未指定這些選項(xiàng),則無需顯式創(chuàng)建集合,因?yàn)樵谑状未鎯蠑?shù)據(jù)時,MongoDB會創(chuàng)建新集合。

      要修改這些收集選項(xiàng),請參見collMod。

      文檔驗(yàn)證

      3.2版中的新功能。

      默認(rèn)情況下,集合不要求其文檔具有相同的架構(gòu)。也就是說,單個集合中的文檔不需要具有相同的字段集,并且字段的數(shù)據(jù)類型可以在集合中的不同文檔之間有所不同。

      但是,從MongoDB 3.2開始,您可以在更新和插入操作期間對集合強(qiáng)制執(zhí)行文檔驗(yàn)證規(guī)則。有關(guān)詳細(xì)信息,請參見架構(gòu)驗(yàn)證。

      修改文檔結(jié)構(gòu)

      要更改集合中文檔的結(jié)構(gòu),例如添加新字段,刪除現(xiàn)有字段或?qū)⒆侄沃蹈臑樾骂愋?,請將文檔更新為新結(jié)構(gòu)。

      唯一標(biāo)識符

      3.6版的新功能。

      注意

      在featureCompatibilityVersion必須設(shè)置為"3.6"或更大。有關(guān)更多信息,請參見查看FeatureCompatibilityVersion。

      集合被分配了一個不變的UUID。在副本集的所有成員和分片群集中的分片中,集合UUID保持相同。

      要檢索集合的UUID,請運(yùn)行?listCollections命令或db.getCollectionInfos()方法。

      視圖

      MongoDB視圖是可查詢的對象,其內(nèi)容由其他集合或視圖上的聚合管道定義?。MongoDB不會將視圖內(nèi)容持久保存到磁盤。當(dāng)客戶端查詢視圖時,將按需計算視圖的內(nèi)容。MongoDB可以要求客戶端?具有查詢視圖的權(quán)限。MongoDB不支持針對視圖的寫入操作。

      例如:

      在員工數(shù)據(jù)集合上通過創(chuàng)建視圖來排除私人或個人信息(PII)信息 。應(yīng)用程序可以在視圖中查詢不包含任何PII的員工數(shù)據(jù)。

      傳感器數(shù)據(jù)的集合上創(chuàng)建一個視圖,以 add計算字段和度量。應(yīng)用程序可以使用簡單的查找操作來查詢數(shù)據(jù)。

      創(chuàng)建一個視圖,其中joins兩個集合分別包含庫存和訂單歷史記錄。應(yīng)用程序可以查詢聯(lián)接的數(shù)據(jù),而無需管理或了解底層的復(fù)雜管道。

      當(dāng)客戶端查詢視圖時,MongoDB會將客戶端查詢追加到基礎(chǔ)管道,并將該組合管道的結(jié)果返回給客戶端。MongoDB可以將?聚合管道優(yōu)化應(yīng)用于組合管道。

      注意

      下頁討論視圖。有關(guān)按需實(shí)例化視圖的討論,請參閱On-Demand Materialized Views 。

      創(chuàng)建視圖

      要創(chuàng)建或定義視圖:

      使用db.createCollection()方法或?create命令:

      復(fù)制

      復(fù)制的

      db.createCollection( "", { "viewOn" : "", "pipeline" : [], "collation" : { } } )

      使用db.createView()方法:

      復(fù)制

      復(fù)制的

      db.createView( "", "", [], { "collation" : { } } )

      注意

      您必須在與源集合相同的數(shù)據(jù)庫中創(chuàng)建視圖。

      視圖定義pipeline不能包含$out或$merge階段。如果視圖定義包括嵌套管道(例如,視圖定義包括?$lookup或$facet階段),則此限制也適用于嵌套管道。

      行為

      視圖表現(xiàn)出以下行為:

      只讀

      視圖是只讀的;對視圖的寫操作將出錯。

      以下讀取操作可以支持視圖:

      db.collection.find()

      db.collection.findOne()

      db.collection.aggregate()

      db.collection.countDocuments()

      db.collection.estimatedDocumentCount()

      db.collection.count()

      db.collection.distinct()

      索引使用和排序操作

      視圖使用基礎(chǔ)集合的索引。

      由于索引位于基礎(chǔ)集合上,因此您不能直接在視圖上創(chuàng)建,刪除或重建索引,也不能在視圖上獲取索引列表。

      從MongoDB 4.4開始,您可以在視圖上$natural?運(yùn)行find命令時指定排序。MongoDB的早期版本不支持$natural視圖排序。

      視圖的基礎(chǔ)聚合管道必須遵守100 MB的內(nèi)存限制,才能阻止排序和阻止組操作。從MongoDB 4.4開始,您可以在視圖上發(fā)出帶有的?find命令,以允許MongoDB使用臨時文件來阻止排序和組操作。allowDiskUse:?true

      在MongoDB 4.4之前,只有aggregate命令接受該allowDiskUse選項(xiàng)。

      另外

      有關(guān)阻止排序操作內(nèi)存限制的更多信息,請參見。Sort?Operations

      投影限制

      find()視圖上的操作不支持以下投影?運(yùn)算符:

      $

      $elemMatch

      $slice

      $meta

      不可變名稱

      您不能重命名視圖。

      視圖創(chuàng)建

      視圖是在讀取操作期間按需計算的,并且MongoDB對視圖執(zhí)行讀取操作,這是基礎(chǔ)聚合管道的一部分。因此,視圖不支持以下操作:

      db.collection.mapReduce(),

      $text運(yùn)算符,因?yàn)?text聚合操作僅對第一階段有效,

      $geoNear?管線階段。

      如果用于創(chuàng)建視圖的聚合管道禁止顯示該?_id字段,則視圖中的文檔將沒有該_id字段。

      分片視圖

      如果視圖的基礎(chǔ)集合被分片,則認(rèn)為它們是分片的。因此,對于通過在$lookup和$graphLookup操作中的值無法指定分片視圖。

      視圖和排序(Views and Collation)

      您可以?在創(chuàng)建時為視圖指定默認(rèn)排序規(guī)則。如果未指定排序規(guī)則,則視圖的默認(rèn)排序規(guī)則是“簡單”二進(jìn)制比較排序規(guī)則。也就是說,視圖不會繼承集合的默認(rèn)排序規(guī)則。

      視圖上的字符串比較使用視圖的默認(rèn)排序規(guī)則。嘗試更改或覆蓋視圖的默認(rèn)排序規(guī)則的操作將失敗,并顯示錯誤。

      如果從另一個視圖創(chuàng)建視圖,則不能指定與源視圖的排序規(guī)則不同的排序規(guī)則。

      如果執(zhí)行涉及多個視圖的聚合(例如with$lookup或)$graphLookup,則這些視圖必須具有相同的排序規(guī)則。

      公共視圖(Public View)定義

      列出集合的操作(例如?db.getCollectionInfos()和)?db.getCollectionNames()在其輸出中包括視圖。

      重要

      視圖定義是公共的;即db.getCollectionInfos()?,explain對視圖的操作將包括定義視圖的管道。因此,請避免在視圖定義中直接引用敏感字段和值。

      刪除視圖

      要刪除視圖,請使用視圖上的db.collection.drop()方法。

      修改視圖

      您可以通過拖放并重新創(chuàng)建視圖或使用collMod命令來修改視圖。

      支持的操作

      以下操作提供對視圖的支持,但本頁中提到的限制除外:

      db.createCollection()

      db.createView()

      db.getCollection()

      db.getCollectionInfos()

      db.getCollectionNames()

      find

      distinct

      count

      db.collection.aggregate()

      db.collection.find()

      db.collection.findOne()

      db.collection.countDocuments()

      db.collection.estimatedDocumentCount()

      db.collection.count()

      db.collection.distinct()

      物化視圖(On-Demand Materialized Views)

      從4.2版開始,MongoD對聚合管道 添加$merge的階段。此階段可以將管道結(jié)果合并到現(xiàn)有集合中,而不是完全替換該集合。此功能允許用戶創(chuàng)建按需實(shí)例化視圖,在該視圖中,每次運(yùn)行管道時都可以更新輸出集合的內(nèi)容。

      例子

      假設(shè)在2019年1月下旬左右,該集合bakesales?按項(xiàng)目包含銷售信息:

      復(fù)制

      復(fù)制的

      db.bakesales.insertMany( [ { date: new ISODate("2018-12-01"), item: "Cake - Chocolate", quantity: 2, amount: new NumberDecimal("60") }, { date: new ISODate("2018-12-02"), item: "Cake - Peanut Butter", quantity: 5, amount: new NumberDecimal("90") }, { date: new ISODate("2018-12-02"), item: "Cake - Red Velvet", quantity: 10, amount: new NumberDecimal("200") }, { date: new ISODate("2018-12-04"), item: "Cookies - Chocolate Chip", quantity: 20, amount: new NumberDecimal("80") }, { date: new ISODate("2018-12-04"), item: "Cake - Peanut Butter", quantity: 1, amount: new NumberDecimal("16") }, { date: new ISODate("2018-12-05"), item: "Pie - Key Lime", quantity: 3, amount: new NumberDecimal("60") }, { date: new ISODate("2019-01-25"), item: "Cake - Chocolate", quantity: 2, amount: new NumberDecimal("60") }, { date: new ISODate("2019-01-25"), item: "Cake - Peanut Butter", quantity: 1, amount: new NumberDecimal("16") }, { date: new ISODate("2019-01-26"), item: "Cake - Red Velvet", quantity: 5, amount: new NumberDecimal("100") }, { date: new ISODate("2019-01-26"), item: "Cookies - Chocolate Chip", quantity: 12, amount: new NumberDecimal("48") }, { date: new ISODate("2019-01-26"), item: "Cake - Carrot", quantity: 2, amount: new NumberDecimal("36") }, { date: new ISODate("2019-01-26"), item: "Cake - Red Velvet", quantity: 5, amount: new NumberDecimal("100") }, { date: new ISODate("2019-01-27"), item: "Pie - Chocolate Cream", quantity: 1, amount: new NumberDecimal("20") }, { date: new ISODate("2019-01-27"), item: "Cake - Peanut Butter", quantity: 5, amount: new NumberDecimal("80") }, { date: new ISODate("2019-01-27"), item: "Tarts - Apple", quantity: 3, amount: new NumberDecimal("12") }, { date: new ISODate("2019-01-27"), item: "Cookies - Chocolate Chip", quantity: 12, amount: new NumberDecimal("48") }, { date: new ISODate("2019-01-27"), item: "Cake - Carrot", quantity: 5, amount: new NumberDecimal("36") }, { date: new ISODate("2019-01-27"), item: "Cake - Red Velvet", quantity: 5, amount: new NumberDecimal("100") }, { date: new ISODate("2019-01-28"), item: "Cookies - Chocolate Chip", quantity: 20, amount: new NumberDecimal("80") }, { date: new ISODate("2019-01-28"), item: "Pie - Key Lime", quantity: 3, amount: new NumberDecimal("60") }, { date: new ISODate("2019-01-28"), item: "Cake - Red Velvet", quantity: 5, amount: new NumberDecimal("100") }, ] );

      1.定義物化視圖

      以下updateMonthlySales功能定義了?monthlybakesales包含累積每月銷售信息的實(shí)例化視圖。在示例中,該函數(shù)采用日期參數(shù)以僅從特定日期開始更新每月銷售信息。

      復(fù)制

      復(fù)制的

      updateMonthlySales = function(startDate) { db.bakesales.aggregate( [ { $match: { date: { $gte: startDate } } }, { $group: { _id: { $dateToString: { format: "%Y-%m", date: "$date" } }, sales_quantity: { $sum: "$quantity"}, sales_amount: { $sum: "$amount" } } }, { $merge: { into: "monthlybakesales", whenMatched: "replace" } } ] ); };

      該$match階段過濾數(shù)據(jù)以僅處理大于或等于的銷售startDate。

      該$group階段按年月分組銷售信息。此階段輸出的文檔具有以下形式:

      { “ _id” : “ ” , “ sales_quantity” : < num > , “ sales_amount” : < NumberDecimal > }

      該$merge階段將輸出寫入?monthlybakesales集合。

      基于在該_id字段(默認(rèn)為unsharded輸出集合),階段檢查中聚集結(jié)果文檔相匹配的集合中的現(xiàn)有文檔:

      如果存在匹配項(xiàng)(即,集合中已經(jīng)存在具有相同年份月份的文檔),則階段將使用匯總結(jié)果中的文檔替換現(xiàn)有文檔。

      如果沒有匹配項(xiàng),那么階段會將聚合結(jié)果中的文檔插入到集合中(不匹配時的默認(rèn)行為)。

      2.執(zhí)行初始運(yùn)行

      對于初始運(yùn)行,您可以輸入日期:new?ISODate("1970-01-01")

      復(fù)制

      復(fù)制的

      updateMonthlySales(new ISODate("1970-01-01"));

      初始運(yùn)行后,monthlybakesales包含以下文檔;即?返回以下內(nèi)容:db.monthlybakesales.find().sort(?{?_id:?1?}?)

      { "_id" : "2018-12", "sales_quantity" : 41, "sales_amount" : NumberDecimal("506") } { "_id" : "2019-01", "sales_quantity" : 86, "sales_amount" : NumberDecimal("896") }

      3.刷新物化視圖

      假設(shè)到2019年2月的第一個星期,該bakesales?集合將使用更新的銷售信息進(jìn)行更新;?特別是1月和2月的銷售量增加。

      復(fù)制

      復(fù)制的

      db.bakesales.insertMany( [ { date: new ISODate("2019-01-28"), item: "Cake - Chocolate", quantity: 3, amount: new NumberDecimal("90") }, { date: new ISODate("2019-01-28"), item: "Cake - Peanut Butter", quantity: 2, amount: new NumberDecimal("32") }, { date: new ISODate("2019-01-30"), item: "Cake - Red Velvet", quantity: 1, amount: new NumberDecimal("20") }, { date: new ISODate("2019-01-30"), item: "Cookies - Chocolate Chip", quantity: 6, amount: new NumberDecimal("24") }, { date: new ISODate("2019-01-31"), item: "Pie - Key Lime", quantity: 2, amount: new NumberDecimal("40") }, { date: new ISODate("2019-01-31"), item: "Pie - Banana Cream", quantity: 2, amount: new NumberDecimal("40") }, { date: new ISODate("2019-02-01"), item: "Cake - Red Velvet", quantity: 5, amount: new NumberDecimal("100") }, { date: new ISODate("2019-02-01"), item: "Tarts - Apple", quantity: 2, amount: new NumberDecimal("8") }, { date: new ISODate("2019-02-02"), item: "Cake - Chocolate", quantity: 2, amount: new NumberDecimal("60") }, { date: new ISODate("2019-02-02"), item: "Cake - Peanut Butter", quantity: 1, amount: new NumberDecimal("16") }, { date: new ISODate("2019-02-03"), item: "Cake - Red Velvet", quantity: 5, amount: new NumberDecimal("100") } ] )

      要刷新monthlybakesales1月和2月的數(shù)據(jù),請再次運(yùn)行函數(shù)以重新運(yùn)行聚合管道 new?ISODate("2019-01-01")

      復(fù)制

      復(fù)制的

      updateMonthlySales(new ISODate("2019-01-01"));

      的內(nèi)容monthlybakesales已更新,以反映bakesales館藏中的最新數(shù)據(jù);即?返回以下內(nèi)容:db.monthlybakesales.find().sort(?{?_id:?1?}?)

      復(fù)制

      復(fù)制的

      { “ _id” : “ 2018-12” , “ sales_quantity” : 41 , “ sales_amount” : NumberDecimal (“ 506” ) } { “ _id” : “ 2019-01” , “ sales_quantity” : 102 , “ sales_amount” : NumberDecimal (“ 1142” ) } { “ _id” : “ 2019-02” , “ sales_quantity” : 15 , “ sales_amount” : NumberDecimal (“ 284” ) }

      Additional Information?

      The?$merge?stage:

      Can output to a collection in the same or different database.

      Creates a new collection if the output collection does not already exist.

      Can incorporate results (insert new documents, merge documents, replace documents, keep existing documents, fail the operation, process documents with a custom update pipeline) into an existing collection.

      Can output to a sharded collection. Input collection can also be sharded.

      See?$merge?for:

      More information on?$merge?and available options

      Example:?On-Demand Materialized View: Initial Creation

      Example:?On-Demand Materialized View: Update/Replace Data

      Example:?Only Insert New Data

      Capped Collections(固定集合)

      概述

      固定集合是固定大小的集合,它們支持高吞吐量操作,這些操作根據(jù)插入順序插入和檢索文檔。固定集合的工作方式類似于循環(huán)緩沖區(qū):一旦集合填充了其分配的空間,它就會通過覆蓋集合中最舊的文檔為新文檔騰出空間。

      有關(guān)?創(chuàng)建固定集合的信息,請參見createCollection()或create了解更多信息。

      建議:

      作為固定集合的替代方法,請考慮MongoDB的?TTL(生存時間)索引。如通過設(shè)置TTL從集合中使數(shù)據(jù)過期中所述,這些索引使您可以基于日期類型字段的值和索引的TTL值來使正常集合中的數(shù)據(jù)過期并刪除。

      TTL索引與固定集合不兼容。

      特性

      插入順序

      固定集合可確保插入順序。查詢不需要索引以插入順序返回文檔。沒有索引開銷,固定集合可以支持更高的插入吞吐量。

      自動刪除最舊的文檔

      為了給新文檔騰出空間,有上限的集合會自動刪除集合中最舊的文檔,而無需腳本或顯式刪除操作。

      考慮以下用于固定集合的潛在用例:

      存儲大容量系統(tǒng)生成的日志信息。在沒有索引的情況下將文件插入具有上限的集合中,接近于將日志信息直接寫入文件系統(tǒng)的速度非???。此外,內(nèi)置的先進(jìn)先出屬性可在管理存儲使用的同時維護(hù)事件的順序。

      在一個固定集合中緩存少量數(shù)據(jù)。由于緩存是讀取而不是寫入大量數(shù)據(jù),因此您要么需要確保此集合始終保留在工作區(qū)域(即,在RAM中),要么需要為所需的一個或多個索引承擔(dān)一定的寫代價。

      例如,將操作日志存儲在副本集中的oplog.rs集合使用固定集合。從MongoDB 4.0開始,與其他設(shè)置固定集合不同,oplog可以超出其配置的大小限制,以避免刪除majority commit point。

      _id索引

      固定集合?默認(rèn)具有一個_id字段和該字段的索引_id。

      限制和建議

      更新

      如果您打算更新固定集合中的文檔,請創(chuàng)建索引,以便這些更新操作不需要集合掃描。

      文檔大小

      在版本3.2中更改。

      如果更新或替換操作更改了文檔大小,會報錯失敗。

      文檔刪除

      您無法從固定集合中刪除文檔。要從集合中刪除所有文檔,請使用drop()?方法刪除集合并重新創(chuàng)建固定集合。

      分片

      您無法將有固定集合分片。

      查詢效率

      使用自然順序可以有效地從集合中檢索最近插入的元素。這(有點(diǎn))類似于tail日志文件。

      聚合$out

      聚合管道階段$out?無法將結(jié)果寫入有固定集合。

      事務(wù)

      從MongoDB 4.2開始,您不能在事務(wù)中寫入固定集合。事務(wù)中仍支持從固定集合中讀取。

      程序

      創(chuàng)建固定集合

      您必須使用db.createCollection()方法顯式創(chuàng)建帶上限的集合?,創(chuàng)建有固定集合時,必須指定集合的 最大大小(以字節(jié)為單位),MongoDB將為該集合預(yù)先分配最大大小。固定集合的大小包括少量內(nèi)部開銷空間。

      復(fù)制

      復(fù)制的

      db.createCollection( "log", { capped: true, size: 100000 } )

      如果size字段小于或等于4096,則集合的上限為4096字節(jié)。否則,MongoDB將提高提供的大小,使其成為256的整數(shù)倍。

      此外,您還可以使用max以下文檔中的字段為集合指定最大文檔數(shù):

      復(fù)制

      復(fù)制的

      db.createCollection("log", { capped : true, size : 5242880, max : 5000 } )

      重要

      即使指定文檔數(shù),也始終需要該size參數(shù)。如果集合在達(dá)到最大文檔數(shù)之前達(dá)到最大size限制,MongoDB將刪除較舊的文檔。

      參考

      db.createCollection()和?create

      查詢固定集合

      如果find()在沒有指定順序的固定集合上執(zhí)行,則MongoDB保證結(jié)果的順序與插入順序相同。

      要以相反的插入順序檢索文檔,請?與參數(shù)設(shè)置為find()的sort()方法一起$natural發(fā)出-1,如以下示例所示:

      復(fù)制

      復(fù)制的

      db.cappedCollection.find().sort( { $natural: -1 } )

      檢查一個集合是固定集合

      使用該isCapped()方法確定集合是否是固定集合,如下所示:

      復(fù)制

      復(fù)制的

      db.collection.isCapped()

      將集合轉(zhuǎn)換為固定集合

      使用convertToCapped命令將非上限集合轉(zhuǎn)換為上限集合:

      復(fù)制

      復(fù)制的

      db.runCommand({"convertToCapped": "mycoll", size: 100000});

      該size參數(shù)以字節(jié)為單位指定上限集合的大小。

      在操作期間,它將持有數(shù)據(jù)庫exclusive lock?。其他操作將被阻止,直到該操作完成。請參閱一些常見的客戶端操作采取了哪些鎖?用于鎖定數(shù)據(jù)庫的操作。

      Tailable Cursor

      tailable cursor?與固定集合可以一起使用。與Unix ?tail?-f命令類似,tailable cursor?“tails”有固定集合的最新數(shù)據(jù)。將新文檔插入固定集合后,您可以使用tailable cursor?繼續(xù)獲取文檔。

      有關(guān)創(chuàng)建Tailable Cursors光標(biāo)信息參看Tailable Cursors。

      MongoDB 云數(shù)據(jù)庫 GaussDB(for Mongo) 數(shù)據(jù)庫

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:ERP如何影響您的財務(wù)管理
      下一篇:excel表格兩格相加怎么操作
      相關(guān)文章
      亚洲av中文无码乱人伦在线咪咕| 亚洲制服在线观看| 国产亚洲无线码一区二区 | 亚洲精品一品区二品区三品区| 亚洲AV无码一区二区三区鸳鸯影院| 亚洲性色精品一区二区在线| 亚洲第一成年网站大全亚洲| 亚洲日本在线免费观看| 亚洲国产精品专区| 亚洲H在线播放在线观看H| 国产日本亚洲一区二区三区| 亚洲精品综合在线影院| 亚洲中文无码mv| 亚洲av无码一区二区三区天堂| 亚洲av永久无码精品秋霞电影秋| 久久亚洲AV成人无码国产最大| 国产精品亚洲综合天堂夜夜| 在线a亚洲v天堂网2018| 亚洲精品国产高清嫩草影院| 国产精品亚洲产品一区二区三区| 成人午夜亚洲精品无码网站| 久久精品国产亚洲7777| 亚洲精品无码久久千人斩| 亚洲A∨无码一区二区三区| 亚洲色图古典武侠| wwwxxx亚洲| 亚洲AV无码成人精品区日韩| 亚洲国产av无码精品| 国产专区一va亚洲v天堂| 亚洲大成色www永久网站| 色噜噜综合亚洲av中文无码| 亚洲国产精品张柏芝在线观看| 国产成人亚洲综合一区| 色偷偷亚洲第一综合网| 久久精品国产精品亚洲下载| 久久久综合亚洲色一区二区三区| 亚洲欧洲在线观看| 亚洲人成免费网站| 久久久久亚洲国产AV麻豆| 久久久无码精品亚洲日韩软件 | 亚洲人成图片网站|