mongodb命令行操作,mongodb 命令
在撰写上一篇博文时,我发现MongoDB shell 提供了很多方法,包括MongoDB 自己的一些方法。下面是我从MongoDB官网找到的所有MongoDB shell的方法。当然,它并不能解释一切。方法有很多,我来详细解释一下。我会用通俗易懂的方式讲解如何使用它以及它的功能,最后我会附上官方网站的链接,所以如果你有兴趣,请点击查看。由于本人翻译水平有限,有些翻译可能不尽如人意。
显示方法有一个小技巧。因此,如果你想查看一个对象可以使用shell 或Linux 系统调用的所有方法,你可以使用object.+tab+tab ,如下所示:图db 对象可以调用的所有方法和集合(后面有半括号的都是方法,没有半括号的都是对象):
:以下开始
采集方式
注意: db.collection.*==db.要操作的集合的名称。 *
方法名称方法功能连接官网db.collection.aggregate(pipeline, options) 计算集合或视图中数据的聚合值。 db.collection.bulkWrite() 版本3.2 链接并控制执行写入操作的多个操作的顺序。自版本3.0 起,链接db.collection.copyTo(newCollection) 已弃用。使用服务器端JavaScript 从当前集合到newCollection.middle。如果newCollection不存在,mongodb会自动创建它。链接db.collection.count(query, options)根据查询条件和限制条件检索符合条件的文档数量。链接db.collection.createIndex(keys, options) 在集合中创建索引。 3.2版本:mongodb不允许创建0版本索引。要升级现有版本0 索引,请参阅版本0 索引链接db.collection.createIndexes([keyPatterns, ]options)。 3.2 版中的新功能是能够创建一个或多个索引链接db.collection.dataSize()。返回当前集合的数据量大小。此方法提供了一个包装器链接db.collection.deleteOne(filter,[writeConcern],[collation]) ,它包装了collStats (即数据库大小输出)。 collection.stats() 命令)从集合db.collection.deleteMany(filter,[writeConcern],[collation]) 删除单个文档链接单个集合中的过滤器删除所有匹配或显示db.collection.distinct 的文档链接(field, query, [options]) 查找指定字段的不同值的列表,并以数组形式返回结果。链接db.collection.drop() 从数据库中删除集合或视图。此方法还会删除与已删除集合关联的索引。此方法提供了drop 命令周围的包装器链接。 db.collection.dropIndex(index) 从集合中删除指定的索引。此方法提供了dropIndexes 命令周围的包装器链接。 db.collection .dropIndexes() 删除除_id 字段上所需索引之外的所有索引。在所有索引中,调用dropIndexes() 作为集合对象的方法。警告: 此命令获取受影响数据库的写锁并阻止其他操作,直到下一个操作完成。 db.collection.ensureIndex(keys, options) 如果索引不存在,则在指定字段上创建索引。建议在3.0.0及以上版本中使用。此方法已重命名为createIndex()。 db.collection.explain() 3.0 版本新增,3.0 版本添加了db.collection.distinct() 支持,用于返回以下操作的查询计划信息:aggregate()、count()、distinct();find()、 group()、remove(); 和update() 方法链接到db.collection.find(查询、投影) 查询集合或视图中满足条件的文档,并选择文档返回游标。链接db.collection.findAndModify(document) 来修改并返回单个文档。默认情况下,返回的文档不包含更新期间所做的更改。使用new 参数返回更新时已更改的文档。链接db.collection.findOne(query, project) 按磁盘上文档的自然顺序返回集合或视图中满足指定查询条件的第一个文档。对于覆盖集合,自然顺序与插入顺序相同。如果没有文档满足查询,则该方法返回null。 db.collection.findOneAndDelete(filter, options) 链接到版本3.2 中的新函数。该函数根据过滤条件删除第一个坏文档并返回删除的文档。链接db.collection.findOneAndReplace(filter,replace,options) 3.2 版本新增,根据过滤条件替换第一个文档。链接db.collection.findOneAndUpdate(filter, update, options) 3.2 版本新增,更新第一个文档根据过滤条件创建文档。链接db.collection.getIndexes() 返回当前集合中现有索引的文档列表数组。必须在集合上调用此方法。
链接db.collection.getShardDistribution() 打印分片集合的分布统计信息。您必须在分片集合上调用此方法。链接db.collection.getShardVersion() 在诊断分片集群的基本问题时返回有关分片集群的有用信息。集群状态信息。仅用于内部诊断链接db.collection.group({ key,reduce,initial [,keyf] [,cond] [,finalize] }) 按指定键对集合中的文档进行分组并执行聚合函数。方法类似于SQL中的SELECT.GROUP BY语句。版本3.4 已弃用:此方法已在版本3.4 中重新定义。使用aggregate() 的$group 或mapReduce() 方法而不是链接db.collection.insert()。使用db.collection.insertOne()(版本3.2 中的新增功能)在集合中插入一个文档或多个文档链接。将文档链接插入集合db.collection.insertMany()(3.2 版中的新功能)。将多个文档链接到集合时,db.collection.isCapped() 确定当前集合是否为上限集合链接db.collection.latencyStats(options) 是$collStats 的包装链接db.collection.mapReduce(map,reduce, {out,query,sort,limit,finalize,scope,jsMode,verbose}) 该方法返回指定集合的延迟统计信息,为要删除的MapReduce 命令db.collection.reIndex() 提供包装器链接。添加到集合并重新创建。对于具有大量数据或大型索引的集合,此操作可能会造成浪费。要删除集合中的所有文档,请链接db.collection.remove()。该方法有两个参数:查询条件和布尔值justOne。要重命名集合,请链接db.collection.renameCollection(target,dropTarget)。该方法为3.2 中的renameCollection 数据库命令db.collection.replaceOne(filter, Replace, options) 新函数提供了一个包装器链接,用于根据过滤器替换集合中的一个文档。链接db.collection.save() 更新现有文档或插入新文档,具体取决于文档参数。链接db.collection.stats(scale \ options) 返回有关集合的统计信息。链接db.collection.storageSize() 分配给该集合用于文档存储的存储总量。提供封装collStats 输出的storageSize 字段的包装器。 db.collection.totalIndexSize() 提供集合中所有索引的总数。该方法封装了一个包装器,该包装器封装了collStats的输出totalIndexSize(即db.collection)。 collection.stats()) 操作链接db.collection.totalSize() 集合中数据的总字节数以及集合中每个索引的大小。链接db.collection.update(query, update, options) 来修改集合中的一个或多个文档。该方法可以修改文档的特定字段或完全替换现有文档,具体取决于更新参数。默认情况下, update() 方法更新单个文档。设置多参数来更新所有符合查询条件的文档。链接db.collection.updateOne(filter, update, options) 3.2 版中的新增功能,可根据过滤器更新集合中的单个文档。链接db.collection.updateMany(filter, update, options) 的新版本3.2 函数,以根据过滤器更新集合中的多个文档。链接db.collection.watch(pipeline, options) 将在集合上打开更改流游标。通过链接db.collection.validate(true) 验证集合。此方法扫描集合的数据结构的正确性,并返回描述逻辑集合与数据本身的描述之间关系的文档。关联
游标法
注意:游标是一个调用以下方法的对象。
方法名称方法功能官方站点连接cursor.addOption(flag) 添加OP_QUERY 有线协议标志(例如tailable 标志)以更改查询行为。但是,从版本3.2 开始,不建议与MongoDB shell 一起使用。您可以使用方便的游标方法来获取mongodb 实例的每个批处理响应中返回的文档数,而不是链接cursor.batchSize(size)。在大多数情况下,更改批处理大小对用户或应用程序没有影响,因为结果会返回到shell 和大多数驱动程序,就像MongoDB 返回单个批处理一样。 Linkcursor.close() 告诉服务器关闭游标并释放关联的服务器资源。服务器会自动关闭没有剩余结果的游标以及闲置一段时间且未被cursor.noCursorTimeout()方法选择的游标。 Linkcursor.isClosed() 返回服务器是否已关闭游标。关闭的游标可能仍保留上一批的文档。要检查游标是否已完全处理,请使用cursor.isExhausted() 或cursor.hasNext()。链接cursor.collation(排序规则文档) 3.4 版本新函数,请参见使用db.collection.find() 返回游标的说明链接Cursor.comment() 3.2 版本新函数,查询中的注释字段添加链接Cursor.count ()返回光标引用的文档数。将count() 方法添加到find() 查询中以返回匹配文档的数量。该操作不执行查询,而是查询返回结果的数量。从2.6版本开始,mongodb支持使用count()进行hint()。链接cursor.explain(verbosity)提供有关db.collection.find()方法的查询计划的信息。 3.0 中方法参数和输出格式发生了变化。 Linkcursor.forEach(function) 迭代光标并为光标中的每个文档执行JavaScript 函数。 Link Cursor.hasNext() 返回当前光标下是否还有任何文档Link Cursor.hint(index) 要覆盖MongoDB 的默认搜索索引和查询优化过程,请在查询中使用该方法。使用db.collection.getIndexes() 方法。返回集合中当前索引的列表。链接cursor.isExhausted()来检查游标是否关闭以及批处理中是否还有任何对象。 isExhausted() 可用于支持迭代游标。即使当前批次中没有文档(例如尾随游标或更改流游标),也保持打开的链接。 cursor.itcount() 返回游标中剩余的文档数。该方法类似于cursor.count()方法,但它实际上查询现有的迭代器并在此过程中耗尽其内容。要将此方法与游标一起使用,请链接cursor.limit() 以限制游标返回的最大文档数。该方法类似于SQL数据库中的LIMIT语句。 Linkcursor.map(function) 对游标中的每个文档应用一个函数,并不断地将应用程序的返回值收集到一个数组中。 Linkcursor.max() 指定限制搜索的特定索引的独占上限。 ().max() 提供了一种指定复合索引上限的方法。链接3.2版本中的新函数Cursor.maxScan()来指定查询计划扫描的文档或索引键的最大数量。一旦达到限制,查询执行就会终止,并返回当前批次的结果。链接cursor.maxTimeMS(时间限制) 2.6 版中新增。指定处理游标操作的总时间限制(以毫秒为单位)。链接Cursor.min() 通过为特定索引指定其自己的下限来限制find().max() 的返回结果,从而提供了一种为复合索引指定下限的方法。 Linkcursor.next() 通过db.collection.find() 返回光标中的下一个文档。请参阅cursor.hasNext() 相关函数。 Linkcursor.noCursorTimeout() 告诉服务器游标在不活动期间不应自动关闭。
Linkcursor.objsLeftInBatch() 返回当前批次中剩余的文档数。如果mongodb 实例批量返回响应,则从单个游标检索所有文档可能需要来自mongodb 实例的多个批量响应。当当前批次中没有更多文档时,游标将检索另一个批次,以在当前光标耗尽之前检索更多文档链接。 cursor.pretty() 设置光标以易于阅读的格式显示结果。链接Cursor.readConcern(level) 3.2 版中的新增功能。指定当前游标的db.collection.find() 方法的写入注意级别。链接Cursor.readPref(mode, tagSet)。向游标添加readPref() 方法。控制客户端如何查询副本集成员链接cursor.returnKey() 3.2 版本中的新函数。更改光标以返回索引键而不是文档。链接cursor.showRecordId() 版本3.2 此方法取代了以前的cursor.showDiskLoc() 方法,并通过将字段recordId 添加到匹配文档来修改查询的输出。 RecordId 是唯一标识集合中文档的内部键。 Linkcursor.size()返回经过cursor.skip()或cursor.limit()方法限制后满足db.collection.find()方法查询条件的文档数量。 ) 在游标上调用该方法可以控制mongodb返回结果的起始位置。这种方法可以帮助您实现分页结果。 Linkcursor.sort(sort) 指定查询返回匹配文档的顺序。在检索数据库中的文档之前,必须对游标应用Sort()。要将光标标记为“tailable”,请链接版本3.2 中的新函数cursor.tailable()。仅用于覆盖范围收集。使用tailable 处理不合格的集合会导致错误。 Linkcursor.toArray() 该方法返回一个包含光标中所有文档的数组。此方法完全迭代游标,将所有文档加载到RAM 中,并耗尽游标。关联
数据库法
方法名称方法功能连接官网db.adminCommand(命令) 通过执行指定的数据库命令,提供管理数据库运行的助手。链接到db.aggregate() 版本3.6 中的新函数,该函数执行指定的管理/诊断通道,而不需要底层集合来收集数据聚合信息。请参阅db.collection.aggregate()。要在MongoDB 实例之间复制数据,请链接db.cloneCollection(from, collection, query)。该方法封装了一个cloneCollection指令链接db.cloneDatabase(“hostname”),将远程数据库数据复制到当前数据库。该命令假定远程数据库与当前数据库同名。链接db.commandHelp(command) 显示指定数据库命令的帮助文本。链接db.copyDatabase(fromdb, todb, fromhost, username,password,mechanism) 确保数据库是从一个mongod 实例到当前mongod 实例,或封装copydb 指令的mongod.db.copyDatabase() 包装器的范围. 将被复制到其中。从3.0 开始,对实例进行身份验证时,db.copyDatabase() 支持SCRAM-SHA-1 和MONGODB-CR 机制来对用户进行身份验证。通过链接db.createCollection(name, options) 创建集合或视图。 3.4 版添加了视图集合和验证函数的创建。由于mongodb 会在命令中第一次引用集合时隐式创建集合,因此此方法主要用于创建具有特定选项的新集合。链接到版本3.4 中的db.createView() 新函数,以创建应用来自源集合或视图的特定聚合管道的结果视图。视图充当只读集合,并在读取操作期间按需计算。 MongoDB 将视图上的读取操作视为隐式聚合管道的一部分。链接db.currentOp() 返回一个包含数据库实例的进程操作信息的文档。该方法封装了数据库指令currentOp link db.dropDatabase(),用于drop当前数据库并删除关联的数据文件。链接db.eval(function, argument) 允许您在mongodb 服务器上运行JavaScript 代码。从版本3.0 开始,链接db.fsyncLock() 用于强制将所有挂起的写入操作刷新到磁盘,防止进一步写入,直到用户使用相应的db.fsyncUnlock() 释放它们。现在锁定整个mongod 实例已弃用。直到命令被锁定。链接db.fsyncUnlock() 将通过db.fsyncLock() 方法将mongod 实例上的锁减1。链接db.getCollection(name) 返回一个集合或视图对象。集合或视图对象函数相当于使用以下函数: db.collectionName.语法。此方法对于名称可能与mongo shell 本身交互的集合或视图很有用,例如以_ 开头的名称或与数据库shell 方法匹配的名称。链接db.getCollectionInfos(filter) 3.0 版本中的新函数。返回一个文档数组,其中包含当前数据库的集合或视图信息,例如名称和选项。链接db.getCollectionNames() 返回一个数组,其中包含数据库中所有集合和视图的名称。当前数据库。链接db.getLastError(w, wtimeout) 指定写入关注级别,用于检查在同一连接上执行的先前写入操作是否成功,并返回该操作的错误字符串。使用此方法时,当前操作必须与您希望看到的写入操作位于同一连接上。链接db.getLastErrorObj() 指定写入关注级别,用于检查在同一连接上执行的先前写入操作是否成功并返回该操作的文档。使用此方法时,当前操作必须与您希望看到的写入操作位于同一连接上。 db.getLogComponents() 链接到3.0 版本中的新函数并返回当前的高级设置。针对日志消息的各个组成部分,详细设置mongodb生成的日志信息量。链接db.getMongo() 该方法在shell 启动时执行。
使用此命令测试mongo shell 是否正确连接到您的数据库实例。 db.getName() 链接当前数据库名称。将db.getPrevError() 链接到包含错误的状态文档。从版本1.6 开始,不推荐使用链接db.getProfilingLevel()。此方法提供了一个封装数据库命令配置文件并返回当前配置文件级别的包装器。建议在1.8.4及以上版本中使用。使用db.getProfilingStatus() 的相关函数链接当前配置文件级别、db.getProfilingStatus() 的SlowOpThresholdMs 设置和SlowOpSampleRate 设置。链接db.getReplicationInfo() 使用oplog 投票中的数据返回一个包含副本集状态的文档。诊断复制问题时使用此输出。链接db.getSiblingDB(database) 用于在shell 环境中返回另一个数据库而不更改db 变量。链接db.help() 列出了db 对象的常用方法的文本。链接db.hostInfo() 返回一个文档,其中包含有关运行mongod 或mongos 的底层系统的信息。某些返回字段仅包含在某些平台上。链接db.isMaster() 返回mongod 实例的角色描述文档。如果此mongod 是副本集的成员,则ismaster 和secondary 字段实例会报告它是副本集的主要成员还是次要成员。链接db.killOp(opid) 以终止操作ID 指定的操作。请参阅db.currentOp() 链接以查找操作及其相应的ID。 db.listCommands() 提供所有数据库命令的列表。链接db.loadServerScripts() 该方法将当前数据库的system.js集合中的所有脚本加载到mongo shell会话中。链接db.logout() 以结束当前身份验证会话。如果当前会话未经过身份验证,则此功能无效。链接db.printCollectionStats() 提供了db.collection.stats() 方法的包装器,并从每个集合返回三个以连字符分隔的统计信息。链接db.printReplicationInfo() 以打印副本集成员oplog 的格式化报告。显示的报告根据db.getReplicationInfo() 返回的数据进行格式化。链接db.printShardingStatus() 打印分片配置的格式化报告以及分片集群中现有块的信息。链接db.printSlaveReplicationInfo() 从集合成员的角度返回副本集。副本集的格式化状态报告,其输出与rs.printSlaveReplicationInfo() 方法匹配。链接db.repairDatabase() 该方法为数据库命令RepairDatabase 提供了包装器。这仅限于当前数据库,类似于运行选项mongod repair 选项。从版本1.6 开始,不建议使用db.resetError() 重置db.getPrevError 或getPrevError 返回的错误消息。提供了一个封装replaceError 命令的包装器。链接db.runCommand(command) 提供了一个帮助程序来运行指定的数据库命令。这是运行数据库命令的首选方式,因为它在shell 和驱动程序之间提供了一致的接口。链接db.serverBuildInfo() 为buildInfo 数据库命令提供了包装器。 buildInfo 返回包含用于编译此mongod 实例的参数摘要的文档。链接db.serverCmdLineOpts() 包装getCmdLineOpts 数据库指令并返回报告用于启动mongod 或mongos 实例的参数和配置选项的文档。链接数据库.serv
erStatus()返回提供数据库进程状态的概述文档。3.0版本修改:该方法不再输出workingSet、indexCounters和recordStats部分。链接db.setLogLevel()3.0版本新功能,设置日志消息的单个详细级别。链接db.setProfilingLevel(level, options)配置database profiler。该方法提供了一个封装profile指令的包装器链接db.shutdownServer()干净和安全的关闭当前的mongod或mongos进程。该方法必须在admin数据库中执行,该指令提供了一个封装shutdown指令的包装器链接db.stats(scale)返回反映单个数据库使用状态的统计信息。链接db.version()返回mongod或mongos实例的版本信息链接 查询计划缓存方法(Query Plan Cache Methods) 方法名方法功能官网连接db.collection.getPlanCache()返回一个接口来访问集合的查询计划缓存。该接口提供查看和清除查询计划缓存的方法。查询优化器只缓存那些可以具有多个可行计划的查询结构的计划。链接PlanCache.clear()删除集合中所有缓存查询计划链接PlanCache.clearPlansByQuery(query, projection, sort)清除指定查询结构的缓存查询计划。链接PlanCache.getPlansByQuery(query, projection, sort)显示指定查询结构的缓存查询计划。查询优化器只缓存那些可以具有多个可行计划的查询结构的计划。链接PlanCache.help()显示查看和修改集合的查询计划缓存的可用方法。链接PlanCache.listQueryShapes()显示存活的缓存查询计划的查询结构。查询优化器只缓存那些可以具有多个可行计划的查询结构的计划。链接 批量操作方法(Bulk Operation Methods) 方法名方法功能官网连接db.collection.initializeOrderedBulkOp()初始化并返回一个用于集合的新的批量操作生成器。生成器构造了mongodb执行批量执行的一个有序的写入操作列表。从3.2版本开始,mongodb还提供了用于执行批量写入操作的在db.collection.bulkWrite() 方法。链接db.collection.initializeUnorderedBulkOp()2.6版本新功能,初始化并返回一个用于集合的新的批量操作生成器。生成器构造了mongodb在批量执行的无序写入操作列表。链接Bulk()2.6版本新功能,批量操作生成器用于在单个集合上的批量操作构造写入操作列表。想要实例化生成器,可以使用 db.collection.initializeOrderedBulkOp()或 db.collection.initializeUnorderedBulkOp()方法。链接Bulk.execute()2.6版本新功能,通过批量操作生成器执行批量操作链接Bulk.find(query)2.6版本新功能,指定用于更新或删除操作的查询条件。链接Bulk.find.arrayFilters(array of filter documents)3.6版本新功能,指定用于确定用于更新或更新一个数组的元素的过滤器。链接Bulk.find.collation(document)3.4版本新功能,指定批量写入的校验规则。追加到Bulk.find()方法来指定查找操作的校验规则。链接Bulk.find.remove()2.6版本新功能,在批量操作中添加一个移除操作,使用Bulk.find()方法指定能确定哪些文档要移除的条件。该方法删除集合中的所有匹配文档。如果移除单个文档,可以参考Bulk.find.removeOne()链接Bulk.find.removeOne()2.6版本新功能,在批量操作中添加一个单文档删除操作。使用Bulk.find()方法指定能确定哪些文档要移除的条件。该方法限制删除单个文档。链接Bulk.find.replaceOne(document)2.6版本新功能,在批量操作中添加一个单文档替换操作。使用Bulk.find()方法指定能确定哪些文档要替换的条件。该方法限制替换单个文档。链接Bulk.find.updateOne(update)2.6版本新功能,在批量操作中添加一个单文档修改操作。使用Bulk.find()方法指定能确定哪些文档要修改的条件。该方法限制修改单个文档。如果想要批量更改文档,请参考Bulk.find.update()链接Bulk.find.update(update)2.6版本新功能,在批量操作中添加一个批量修改操作。该方法更新现有文档中的特定字段。使用Bulk.find()方法指定能确定哪些文档要修改的条件。该方法修改所有的匹配文档。链接Bulk.find.upsert()2.6版本新功能,需要在一个修改或替换操作将upsert选项设为true。如果将upsert选项设置为true,如果不存在匹配文档,则执行插入操作。如果确实存在匹配文档,则执行指定的更新或替换。链接Bulk.getOperations()2.6版本新功能,返回通过Bulk.execute()方法执行的写入操作数组。返回的写入操作是由mongodb确定的用于执行的群组。链接Bulk.insert(document)2.6版本新功能,将插入操作添加到批量操作列表中。链接Bulk.tojson()2.6版本新功能,返回一个包含了批量方法对象中操作数和批处理数的json文档。链接Bulk.toString()2.6版本新功能,将包含了批量方法对象中操作数和批处理数的json文档作为字符串返回链接 用户管理方法(User Management Methods) 方法名方法功能官网连接db.auth()允许用户在shell中对数据库进行身份验证。链接db.changeUserPassword(username, password)修改用户的密码链接db.createUser(user, writeConcern)为运行该方法的数据库创建一个新用户。如果用户已经存在于数据库中,则会报用户重复错误信息。链接db.dropUser(username, writeConcern)从当前数据库中删除用户。链接db.dropAllUsers(writeConcern)从当前数据库中删除所有用户。链接db.getUser(username, args)返回指定用户的用户信息。在用户所在的数据库上运行该方法。链接db.getUsers()返回数据库中所有用户的信息。链接db.grantRolesToUser(username, roles, writeConcern)授权用户角色列表链接db.removeUser()根据用户名从数据库中删除指定的用户。2.6版本以后不建议使用使用db.dropUser()替换。链接db.revokeRolesFromUser( username, [ roles ], { writeConcern } )移除一个用户的一个或多个角色链接db.updateUser(username, update, writeConcern)更新运行该方法的数据库的对应用户的数据。对字段的更新会完全替换先前字段的值。这包括对用户角色数组的更新。注:当您更新角色数组时,您会完全替换先前数组的值。所以若要添加或删除角色,无需替换所有用户现有角色,请使用db.grantRolesToUser()或db.revokeRolesFromUser()方法。链接 角色管理方法(Role Management Methods) 方法名方法功能官网连接db.createRole(role, writeConcern)在数据库中创建角色(自定义角色)。您可以通过显示列出权限列表或通过角色继承来自其他角色或两者的特权来指定角色的权限。该角色适用于运行该方法的数据库上。链接db.dropRole(rolename, writeConcern)从运行该方法的数据库中删除指定的用户自定义的角色链接db.dropAllRoles(writeConcern)从运行该方法的数据库中删除所有的用户自定义的角色链接db.getRole(rolename, args)返回指定角色继承权限的角色列表。同样,该方法还可以返回该角色的所有权限。在包含该角色的数据库中运行该方法,该命令可以获取用户定义角色(user-defined roles)和内置角色(built-in roles)的信息。链接db.getRoles()返回运行该方法的数据库中所有角色的信息。该方法有无参数都可以运行。如果没有参数运行,该方法返回数据库所有用户定义角色的继承信息。链接db.grantPrivilegesToRole(rolename, privileges, writeConcern)向指定用户定义角色授予附加权限。链接db.revokePrivilegesFromRole(rolename, privileges, writeConcern)从运行该方法的数据库中删除指定自定义角色的指定权限链接db.grantRolesToRole(rolename, roles, writeConcern)给指定自定义角色授权权限链接db.revokeRolesFromRole(rolename, roles, writeConcern)从一个角色中移除指定的继承角色。链接db.updateRole(rolename, update, writeConcern)更新指定的用户自定义角色,该方法必须运行在该角色所在的数据库上。注:对角色字段数据的更改会完全覆盖以前的数据,如果只是增加或删除某一数据,请参考上列方法。链接 副本方法(Replication Methods) 方法名方法功能官网连接rs.add(host, arbiterOnly)添加一个成员到副本集中,若要运行该方法,必须连接到复制集的主集。链接rs.addArb(host)给一个现有副本集中添加一个新的仲裁。注:一般来说,尽量避免每个副本集有超过一个的仲裁链接rs.conf()返回包含当前副本集配置的文档。该方法包装了replSetGetConfig指令链接rs.freeze(seconds)使当前副本集在一段时间内放弃精选主集的资格链接rs.help()返回用于所有副本集相关shell函数的帮助文本。链接rs.initiate(configuration)启动一个副本集。该方法可以选择以包含副本集配置信息的文档形式进行参数化。链接rs.printReplicationInfo()2.6版本新功能,以格式化报表打印副本集成员的oplog,所显示的格式化报表的数据是由db.getReplicationInfo()返回的。rs.printReplicationInfo()的输出与db.printReplicationInfo()的输出相同。链接rs.printSlaveReplicationInfo()从集合的从成员的角度返回包含副本集状态的格式化报表,该方法与db.printSlaveReplicationInfo()的输出完全相同。链接rs.reconfig(configuration, force)重新定义现有副本集,覆盖现有副本集配置。若要运行该方法,必须连接到副本集的主集。链接rs.remove(hostname)从当前副本集中删除参数所描述的成员。此函数会断开shell链接,并将作为复制集重联且会重新选举谁将成为主集。因此,即使该命令成功执行,shell也会报错。链接rs.slaveOk()为db.getMongo().setSlaveOk()做一个简要说明,其允许当前连接同意在从节点运行读取操作。请参考readPref()方法以便在mongo shell上的读取操作获取更细粒度的控制。链接rs.stepDown(stepDownSecs, secondaryCatchUpPeriodSecs)将副本集的主节点属性设为从节点,当主节点降级完成之后,eligble secondaries将会举行主节点的选举。该方法不会立刻将主节点降级,如果没有可以使用的从节点与主节点保持一致,则主节点会等待secondaryCatchUpPeriodSecs参数(默认10秒)让一个从节点提升为主节点。一旦有可用的空闲从节点,则该方法会将主节点降级。一旦降级,原先的主节点会变成从节点并且在接下来的stepDownSecs参数的时间内没有资格选举变成主节点。链接rs.syncFrom()提供了一个封装replSetSyncFrom的包装器,它允许管理员暂时为当前成员重写默认同步目标。以[hostname]:[port]格式指定要复制的成员名称。链接 分片方法(Sharding Methods) 方法名方法功能官网连接sh.addShard(url)将一个片副本添加到一个片集群中。此方法必须运行在一个mongos实例上。链接sh.addShardTag(shard, tag)将一个片与标记或标识符关联。mongodb使用这些标识符直接将位于标记范围内的块连接到特定的片。该方法将块范围与标记范围关联起来。3.4版本修改:该方法又名为sh.addShardToZone(),上面的功能仍然适用于3.2版本。3.4版本MongoDB提供Zone sharding作为标记-感知分片的替代品链接sh.addShardToZone(shard, zone)3.4版本新功能,将一个片与一个分区关联起来。mongodb将此片与给定区域关联。被区域覆盖的块被分配给与区域关联的片。链接sh.addTagRange(namespace, minimum, maximum, tag)将一系列片键的值附加到使用sh.addShardTag()方法创建的片标记中。3.4版本修改:该方法又名为sh.updateZoneKeyRange(),上面的功能仍然适用于3.2版本。3.4版本MongoDB提供Zone sharding作为标记-感知分片的替代品链接sh.disableBalancing(namespace)禁用指定的分片集合的平衡器。这不会影响同一集群中其他分片集合的块的平衡。注:您只能在mongos实例上运行该方法,如果运行在mongod实例上,则会报错。链接sh.enableBalancing(namespace)启用用于分片集合的指定命名空间的平衡器。注:您只能在mongos实例上运行该方法,如果运行在mongod实例上,则会报错。链接sh.disableAutoSplit()3.4版本新功能,禁用在config.settings集合中的自动拆分标志。当启用了对一个分片集群进行自动拆分功能时,mongodb会从快速增长的块的片键的值自动拆分块。默认情况下启用自动拆分。注:您只能使用shell链接到mongos实例上运行该方法,如果运行在mongod实例上,则会报错。链接sh.enableAutoSplit()3.4版本新功能,启用分片集群的自动拆分功能。该方法启用了在config.settings集合中的自动拆分标志。默认情况下启用自动拆分。注:您只能使用shell链接到mongos实例上运行该方法,如果运行在mongod实例上,则会报错。链接sh.enableSharding(database)启用指定数据库上的分片。这并不自动地将任何集合进行分片处理,而是可以使用sh.shardCollection()启动分片集合。链接sh.getBalancerHost()自3.4版本开始,不推荐使用:从3.4开始,平衡器运行在CSRS(Config Server Replication Set-配置服务器副本集)的主节点上。CSRS的主节点上使用一个名为“ConfigServer”的进程id来持有“balancer”锁。这个锁永远不会释放。链接sh.getBalancerState()该方法用于判断平衡器是否启用,这并不能反映平衡操作的当前状态:使用sh.isBalancerRunning()来检查平衡器的当前状态。链接sh.removeTagRange(namespace, minimum, maximum, tag)3.0版中的新功能,移除一系列使用sh.addShardTag方法创建的片键的值。3.4版本修改:该方法又名为sh.removeRangeFromZone(),上面的功能仍然适用于3.2版本。3.4版本MongoDB提供Zone sharding作为标记-感知分片的替代品链接sh.removeRangeFromZone(namespace, minimum, maximum)3.4版本新功能,删除一系列片键的值和区域之间的关联。链接sh.help()返回shell关于所有的分片函数基本的帮助文本。链接sh.isBalancerRunning()判断平衡器进程是否正在运行,且正在迁移块。使用sh.getBalancerState()来确定是否启用了平衡器或禁用了平衡器。链接sh.moveChunk(namespace, query, destination)将包含符合指定查询的文档的块移动到目标片。该方法提供了一个包装moveChunk数据库指令的包装器链接sh.removeShardTag(shard, tag)删除标记与片之间的关联。该方法只能运行连接的mongos实例上。3.4版本中更改:该方法别名为sh.removeShardFromZone(),上面的功能仍然适用于3.2版本。3.4版本MongoDB提供Zone sharding作为标记-感知分片的替代品链接sh.removeShardFromZone(shard, zone)3.4版本新功能,移除区域与片之间的关联。链接sh.setBalancerState(state)启用或禁用平衡器。使用sh.getBalancerState()来确定当前是否启用了平衡器或禁用了平衡器,并使用sh.isBalancerRunning()来检查其当前状态。注:您只能使用shell链接到mongos实例上运行该方法,如果运行在mongod实例上,则会报错。链接sh.shardCollection(namespace, key, unique, options)使用片键作为关键字来切分集合。链接sh.splitAt(namespace, query)以查询获得的数据作为片键的值来切分块。链接sh.splitFind(namespace, query)将包含以查询获得的数据作为片键的值的块从中间切分成两个相等的块。相反地,要在特定点上拆分块,请参考sh.splitAt()。链接sh.startBalancer(timeout, interval)在一个分片集群中启动平衡器。从mongodb 3.4开始,该方法不会等待平衡器来开始。在早期版本中,该方法等待平衡器才启动。注:您只能使用shell链接到mongos实例上运行该方法,如果运行在mongod实例上,则会报错。链接sh.status()当运行在一个mongos实例时,打印一个格式化的分片配置报表以及关于一种分片集群中现有块的信息。如果块总数大于或等于20,则会默认不显示详细的块信息。链接sh.stopBalancer(timeout, interval)3.4版本新功能,禁用一个分片集群中的平衡器。如果平衡进程正在运行中,则会等待平衡器完成平衡操作。注:您只能使用shell链接到mongos实例上运行该方法,如果运行在mongod实例上,则会报错。链接sh.waitForBalancer(wait, timeout, interval)等待平衡器状态的改变,该方法是一个内部的方法。链接sh.waitForBalancerOff(timeout, interval)内部方法,等待平衡器停止。链接sh.waitForPingChange(activePings, timeout, interval)该方法等待activepings的一个ping状态的改变,并且只有当指定的ping更改状态时才返回。链接sh.updateZoneKeyRange(namespace, minimum, maximum, zone)3.4版本新方法,将一系列片键的值与区域关联起来.链接 对象决策与方法(Object Constructors and Methods) 方法名方法功能官网连接BulkWriteResult()2.6版本新功能。一个包含Bulk.execute()方法返回结果的包装器链接Date()返回当前日期作的字符串或日期对象。date():在shell中返回当前日期的字符串。new date():将当前日期作为日期对象返回。shell使用ISODate助手封装日期对象,ISODate属于UTC。链接ObjectId(hexadecimal)返回一个新的objectid值。12字节的objectid值包括:4字节值,表示自unix纪元(1970.1.1)以来的秒数,3字节机器标识符,2字节进程id,3字节的以随机值开头计数器。链接ObjectId.getTimestamp()返回ObjectId()的时间戳部分作为日期链接ObjectId.toString()返回ObjectId()的字符串表示形式。此字符串值具有ObjectId(…)的格式。链接ObjectId.valueOf()将ObjectId()以小写十六进制字符串返回。此值是 ObjectId()对象的str属性。链接UUID()生成一个bson uuid对象。链接WriteResult()一个包含有mongo shell 写入方法的结果状态的封装器链接WriteResult.hasWriteError()判断mongo shell的写方法的结果是否具有WriteResult.writeError链接WriteResult.hasWriteConcernError()判断mongo shell的写方法的结果是否具有WriteResult.writeConcernError链接 连接方法(Connection Methods) 方法名方法功能官网连接connect(url, user, password)创建一个与mongodb实例的连接并返回到数据库的引用。然而,在大多数情况下,使用Mongo()对象及其getDB()方法代替。链接Mongo(host)JavaScript构造器从mongo shell或者一个JavaScript文件中实例化一个数据库链接链接Mongo.getDB(database)从mongo shell或者一个JavaScript文件中提供一个访问数据库的对象链接Mongo.getReadPrefMode()返回Mongo()链接对象的读取操作方式链接Mongo.getReadPrefTagSet()返回Mongo()链接对象的读取操作标记链接Mongo.isCausalConsistency()3.6版本新功能,返回一个当前连接对象是否启用因果一致性(causal consistency)的布尔值。链接Mongo.setCausalConsistency(boolean)3.6版本新功能,启用或禁用连接对象的因果一致性(causal consistency),注:即使会话可能具有因果一致性,也可能导致因果一致性,因此,在连接对象可能具有因果一致性,反之亦然。链接Mongo.setReadPref(mode, tagSet)在一个mongo连接中调用该方法控制客户端如何将查询到副本集成员的所有路由。链接Mongo.setSlaveOk()对于当前会话,此命令允许从非控制(即从属或次要)实例进行读取操作。链接Mongo.startSession(options)3.6版本新功能,为一个链接开启一个session,mongo shell将会话id分配给与会话关联的命令链接Session()3.6版本新功能,在mongo shell对象链接的session对象链接SessionOptions()3.6版本新功能,返回mongo shell对象链接的session对象的参数链接 本机方法(Native Methods) 方法名方法功能官网连接cat(filename)返回指定文件的内容。该方法使用当前shell会话的输出返回,不会影响服务器。链接cd(path)更改mongo shell的目录上下文,并且对mongodb服务器没有任何影响。链接copyDbpath()内部应用链接fuzzFile(filename)内部应用链接getHostName()返回运行mongo shell进程的系统的主机名。链接getMemInfo()返回一个包含两个字段的文档,用于查看javascript shell进程使用的内存量。返回的字段是resident和virtual的。链接hostname()返回运行mongo shell进程的系统的主机名。链接listFiles()返回目录中包含每个对象的文档的数组。此函数在mongo shell的上下文中运行。链接load(file)加载并运行一个javascript文件到当前shell环境中。链接ls()返回当前目录中文件的列表。链接md5sumFile(filename)返回指定文件的md5哈希值。链接mkdir(path)在指定路径中创建目录。运行mongo shell的用户必须拥有在指定路径中创建目录的权限。链接pwd()返回当前目录。(经测试解释没问题,但是它的名字太有误导性了)链接quit()退出当前shell会话。链接removeFile(filename)从本地文件系统中删除指定的文件。链接resetDbpath()内部应用链接sleep(ms)在指定时间内暂停javascript执行上下文。链接setVerboseShell()该方法使指示mongo shell打印每个操作的持续时间。链接version()返回mongo shell 版本字符串,在2.4版本以前,该方法只是打印版本号,但是不是字符串链接_isWindows()判断当前mongo shell运行的系统是不是windows系统链接_rand()返回介于0和1之间的随机数。链接_srand()内部应用链接天地劫幽城再临归真4-5攻略:第四章归真4-5八回合图文通关教学[多图],天地劫幽城再临归真4-5怎么样八回合内通
2024-03-30