MongoDB学习(三):MongoDB Shell的使用

2019-03-27 09:30|来源: 网络


MongoDB shell

  MongoDB自带简洁但功能强大的JavaScript shell。JavaScript shell键入一个变量会将变量的值转换为字符串打印到控制台上。

  下面介绍基本的操作,一些注意事项。数据库CRUD操作将在下面的篇幅中介绍《MongoDB学习 (四):创建、读取、更新、删除(CRUD)快速入门

  打开命令提示(cmd.exe)。进入到MongoDB解压的目录的bin目录下,即D:\NoSQL\mongodb-win32-x86_64-2.4.3\bin;然后执行mongo.exe(或者mongo)启动MongoDB shell。

  

  shell默认连接test数据库。要使用别的数据库,在服务器地址后添加斜杠和数据库名就可以了(下图连接的就是本地默认端口的mongod,但用的是admin数据库):  

  

  还有一种方法选择连接数据库,像SQL shell中一样,使用 "use databaseName",数据库不存在也没关系。使用"db"查看当前连接数据库名词。

 

  

 

  使用--nodb选项启动shell,而不连接数据库。

  

 Tips:使用ctrl+w 快速删除光标所在行内容。

  使用db.help()可以查看数据库级别的命令的帮助,集合的相关帮助可以通过db.foo.help()来査看

  有个了解函数功用的技巧,就是在输入的时候不要输括号。这样就会显示该函数的JavaScript源代码。下面我们看看remove的机制:

  

  使用db.集合名的方式来访问集合一般不会有问题,但如果集合名恰好是数据库类的一个属性时就不行了。当JavaScript只有在db中找不到指定的属性时,才会将其作为集合返回。当有属性
与目标集合同名时,可以使用getCollection函数。

  例如,要访问version这个集合。因为db.version是个数据库函数(它返回正在运行的MongoDB服务器的版本)。所以输入db.version会显示该函数的JavaScript源代码,而不是我们想显示的集合。
  

  当我们遍历集合众文档信息时,可以书用"."操作符。

Show(db.posts.title);

Show(db.posts.content);

……

  也可以使用数组访问形式来访问子集合:

collections=["title","author","content","date"];

for (i in collections) {

  Show(db.posts[collections[i]]);

}


JavaScript解释器

  shell是功能完本的JavaScript解释器 可以运行任何JavaScript程序.

 

  基本运算:

  

  调用Javascript标准库或者函数:

  

  从shell中可以连接任意多个数据库,这对多个服务器的环境还是非常方便的。调用connect (),并将结果赋值给变量。

  (分片环境中待补充----)


转自:http://www.cnblogs.com/egger/archive/2013/04/30/3052142.html

相关问答

更多
  • mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]] mongodb:// 这是固定的格式,必须要指定。 username:password@ 这是可选的. 如果设置,在连接 数据库服务器之后,驱动都会尝试登陆这个数据库。 host1 是这个URI唯一要填写的。它指定了要连接 服务器的地址。 :portX 可选的指定 端口,如果不填,默认为27017 。 / ...
  • 1、你好,学习shell脚本主要的难点在于语法较为特殊,而且规定比较严格,需要多看,多练才能熟悉,比如条件判断[ $a -eq 1 ]如果写成[$a -eq 1]就会报错(两边的中括号内部的空格不能少),我以前刚学习shell的时候也是遇到了很多坑,不过在编写了较多的脚本后也就能熟练了 2、如果想学习shell脚本首先要在熟悉linux的基础上学习,因为shell脚本本身就是方便管理员进行设置或者管理开发的,能熟练使用shell就可以大大减轻linux管理的压力; 3、给你一个用shell脚本编写的俄罗斯方 ...
  • 这应该是诀窍: 删除第一行 将第二行更改为var db = db.getSisterDB("main") This should do the trick: Remove first line Change second line to var db = db.getSisterDB("main")
  • db.getLastErrorObj()是您要调用以获取更新结果的内容。 它返回一个看起来像这样的对象: { "updatedExisting" : true, "n" : 2, "connectionId" : 35, "err" : null, "ok" : 1 } n是更新文档的数量。 The db.getLastErrorObj() is what you want to call to get the result of the update. It re ...
  • 如果你可以发布一个你要比较的相同功能的两个版本的例子,那么我可以给你一个更好的解释但是因为你没有提供任何例子,所以我只能说一般。 一些差异是因为Mongo shell按顺序执行所有操作。 在Node中,您必须使用回调或承诺进行流控制,而不是在Mongo shell中执行。 您访问集合的方式也存在一些差异。 在Mongo shell中,您通常使用db.collectionName 。 同样在Mongo shell中,您可以预定义一些内容,例如与对象ID相关的函数。 最后Mongo使用BSON作为数据,在Nod ...
  • 您必须使用要执行请求的collection的名称替换collection .Plus更改集合的名称,以这种方式请求它(使用 - separator)将无效。 db.edx.course.students.find({}); 看看mongodb文档 You gotta replace the collection by the name of the collection you want to perform the request on.Plus change the name of your coll ...
  • 是的,您将使用Last Error命令 ,但您需要设置fsync标志(和/或复制参数 ,具体取决于您对“safe”的定义): # force fsync > db.runCommand({getlasterror:1,fsync:true}) # wait for replication to one other server (w = 2) > db.runCommand( { getlasterror : 1 , w : 2 } ) 如果您正在进行多次写入,则可以在最后一次写入后请求fsync或复制 ...
  • 列出数据库尝试: function sd(){ return db._adminCommand( { listDatabases: 1 } ) } 基本上你必须在这里运行有效的JavaScript。 请记住,您必须在admin数据库的上下文中运行它们 - runCommand是不够的 - 您必须在此处使用_adminCommand。 有关其他命令,请参阅http://docs.mongodb.org/manual/reference/command/ 如果你想摆脱括号,还有一种方法(你必须将属 ...