mongodb的主要命令集合 - 参考教程

发布于
# 编程

mongo Shell历史记录

您可以检索以前发布的命令在mongo shell窗口中按上下箭头键。命令历史记录也存储在~ / .dbshell文件。

命令行选项 Command Line Options

mongo命令可以跟随众多的选项。

下表显示一些常见mongo选项:


选项说明
--help显示命令行有哪些选项
--nodb

在没有连接到数据库时使用mongo shell。

--shell

用来运行一个javascript文件



命令行帮助

mongo shell提供各种帮助。下表显示一些常见的帮助方法和命令:

help方法和命令说明
help显示帮助。
db.help()显示关于数据库方法的帮助
db.<collection>.help()

显示关于集合方法的一些帮助 

集合可以是现有的集合的名称或一个不存在的集合。.

show dbs打印服务器上的所有数据库的列表。
use <db>切换当前数据库到 <db>. mongo命令 variabledb 是切换到当前数据库
show collections打印当前的数据库的所有集合的列表
show users打印当前的数据库的用户列表。
show roles对当前数据库打印所有角色列表,包括用户定义的和内置的。
show profile打印最近五条操作。有关更多信息,请学习mongodb数据库分析器。
show databases

新的2.4版本中:打印所有可用的数据库列表。

load()

执行一个JavaScript文件。有关更多信息,请参见mongo Shell脚本。

基本的JavaScript shell操作

mongo shell为数据库操作提供了一个JavaScript API。

在mongo 命令中,db表示的是当前数据库的变量引用。变量将自动设置为默认数据库test或设置成您使用 use < db>所切换到的当前的数据库

下表显示一些常见的JavaScript操作:

JavaScript Database Operations说明
db.auth()如果在安全模式下运行,对用户进行身份验证。
coll = db.<collection>

定义一个当前数据库中一个特定的集合变量,像下面的例子:

coll = db.myCollection;

您可以使用这个coll变量执行集合<myCollection>的操作,如以下示例:

coll.find();
find()

找到集合中的所有文档,并返回一个指针。

insert()将一个新文档插入到集合中。
update()

在集合中更新现有文档。

save()

插入一个新文档或更新现有集合中的文档。

remove()

从集合中删除文档。

drop()drop或完全地删除集合。
createIndex()创建一个新的索引收集如果索引不存在;否则,操作没有任何影响。
db.getSiblingDB()返回一个引用到另一个数据库使用相同的连接没有显式地转换当前数据库。这允许跨数据库查询。

查看更多的信息, 可以查看官方的文档:

快捷键

在2.2版本中改变的。

mongo shell提供了大部分键盘快捷键类似于bash shell或在编辑器中的。对于一些函数mongo提供多个键绑定,以适应几个熟悉的范例。

下表列举了mongo shell支持的快捷键:

快捷键功能
Up-arrow上一个历史记录
Down-arrow下一个历史记录
Home光标移动至行首
End光标移动至行尾
Tab自动完成
Left-arrowbackward-character
Right-arrowforward-character
Ctrl-left-arrowbackward-word
Ctrl-right-arrowforward-word
Meta-left-arrowbackward-word
Meta-right-arrowforward-word
Ctrl-Abeginning-of-line
Ctrl-Bbackward-char
Ctrl-Cexit-shell
Ctrl-Ddelete-char (or exit shell)
Ctrl-Eend-of-line
Ctrl-Fforward-char
Ctrl-Gabort
Ctrl-Jaccept-line
Ctrl-Kkill-line
Ctrl-Lclear-screen
Ctrl-Maccept-line
Ctrl-Nnext-history
Ctrl-Pprevious-history
Ctrl-Rreverse-search-history
Ctrl-Sforward-search-history
Ctrl-Ttranspose-chars
Ctrl-Uunix-line-discard
Ctrl-Wunix-word-rubout
Ctrl-Yyank
Ctrl-ZSuspend (job control works in linux)
Ctrl-H (i.e. Backspace)backward-delete-char
Ctrl-I (i.e. Tab)complete
Meta-Bbackward-word
Meta-Ccapitalize-word
Meta-Dkill-word
Meta-Fforward-word
Meta-Ldowncase-word
Meta-Uupcase-word
Meta-Yyank-pop
Meta-[Backspace]backward-kill-word
Meta-<beginning-of-history
Meta->end-of-history


查询语句

在mongo shell执行读取操作使用find()和findOne()方法。

find()方法返回一个指针对象的mongo shell迭代在屏幕上打印文档。默认情况下,mongo打印前20条。mongo shell将提示用户“Type it”来继续迭代接着的20的结果。

下表提供了一些常见的mongo shell读取操作:

Read Operations说明
db.collection.find(<query>)

找到相匹配的文档集合中的<查询>标准。如果没有指定<查询>标准或者是空的(即{ }),读操作将选择集合中的所有文档。      

下面的例子中选择文档users集合中的name字段等于“Joe”

coll = db.users;
coll.find( { name: "Joe" } );
db.collection.find(<query>, <projection>)

找到<query>标准匹配的文档并返回特定字段<projection>。

下面的例子从集合中选择所有文件但只返回名称字段和_id字段。_id总是返回,除非显式指定不用返回。

coll = db.users;
coll.find( { }, { name: true } );
db.collection.find().sort(<sort order>)

返回结果按指定的<sort order>排序。

下面的例子从集合中选择所有文件并返回结果按name字段升序排列(1),按降序排序使用-1:

coll = db.users;
coll.find().sort( { name: 1 } );
db.collection.find(<query>).sort(<sortorder>)返回文档匹配<query>的结果并指定的<sort order>排序顺序
db.collection.find( ... ).limit( <n> )限制结果为< n >行。强烈推荐你使用,为了最佳性能你可以只需要一个特定的行数。
db.collection.find( ... ).skip( <n> )跳过<n>条结果.
count()返回集合中的文档的总数。
db.collection.find(<query>).count()

返回查询匹配到的文档总数。

count() 会忽略 limit() 和 skip(). 例如,如果100条记录匹配,但限制是10,count()将返回100。这比迭代自己g更快,但也需要时间。

db.collection.findOne(<query>)

找到并返回一个单一的文档。如果没有找到就返回null。

下面的示例集合中选择一个文档,用户集合中的name字段匹配“Joe”:

coll = db.users;
coll.findOne( { name: "Joe" } );

在内部,findOne()方法等同于find()方法加上一个limit(1)。


错误检查方法

在2.6版本中改变。

现在mongo shell写方法集成问题直接写入方法执行,而不是一个单独的db.getLastError()方法。因此,现在写方法返回一个WriteResult()对象,它包含操作的结果,这个结果包括任何写错误和写关系错误。

以前的版本使用db.getLastError()和db.getLastErrorObj()方法返回错误信息。

数据库管理命令行帮助

下表列出了一些常见的方法来帮助数据库管理:

JavaScript Database Administration Methods介绍
db.cloneDatabase(<host>)

从指定的<host>复制到当前数据库。

<host>数据库实例必须在noauth模式。

db.copyDatabase(<from>, <to>, <host>)

在当前的服务器中,拷贝<from>数据库, 从<host>到<to>数据库

<host>数据库实例必须在noauth模式。

db.fromColl.renameCollection(<toColl>)重命名集合名,从 fromColl 到 <toColl>.
db.repairDatabase()

修复和调整的当前数据库。此操作可能在大型数据库操作过程中非常缓慢。

这个操作可以使数据库文件所占空间更小,因为mongodb在执行删除操作时,不会回收这个删除的文档所对应的空间。所以使用这个命令来统一回收。

db.getCollectionNames()获取当前数据库中的所有集合的列表。
db.dropDatabase()删除当前数据库。


打开新的数据库连接

您可以在mongo shell中创建新连接。

下面的表显示了创建连接的方法:

JavaScript Connection Create Methods说明
db = connect("<host><:port>/<dbname>")
打开一个新的数据库连接。
conn = new Mongo()
db = conn.getDB("dbname")

打开一个连接到一个新的服务器使用 new Mongo()。     

使用getDB()方法选择一个数据库连接。


其它

下面的表显示了一些其他方法:


Method说明
Object.bsonsize(<document>)

打印<document>的BSON大小,以bytes描



    提示:MongoDB源代码存储库包含一个 /jstests 目录,这里边包含许多的 mongo shell脚本。