MongoDB入门--连接MongoDB,调用MongoDB服务
MongoDB入门--连接MongoDB,调用MongoDB服务
一、连接到一个MongoDB服务
这里我们用MongoDB自带的一个命令行客户端来连接MongoDB.
在命令行下,我们需要键入像下面的命令:
mongo
如果是windows系统,在没有注册环境变量的情况下,我们需要输出这个命令所在磁盘的完整路
径,例如:C:\web\service\mongodb\bin\mongo.exe。如果路径中有空格,在路径两端加双引号
。
默认情况下,MongoDB的连接默认端口是27017,本机测试的话IP为127.0.0.1。要连接其他服务
器,我们可以按下面的格式键入连接命令:
mongo --port 27017 --host xxx.xxx.xx.xx.
连接成功后,我们进入mongo的javascript命令行.以下操作均在mongo的javascript命令行下进
入,退出用exit命令。
选择一个数据库
连接到MongoDB后,我们要选择一个数据库进行操作,返回当前所在的数据(默认当前数据库为
test),在命令行下键入
db
1.显示所有的数据列表,用下面的命令:
show dbs
2.切换当前的数据库到mydb,用下面的命令:
use mydb
3.确认您当前的数据库是mydb,用:
db
注意:此时,如果show dbs,也不会包括mydb数据库。 MongoDB的不会永久创建一个数据库,直
到有数据插入到该数据库。创建集合并插入文档介绍的过程中插入数据。
查看MongDB的帮助用:
help
二、创建集合和插入文档
在本节中,您将在mydb中插入一个名为testData的集合。
MongoDB第一次使用将隐式创建一个集合,您不需要在插入数据之前创建集合。此外,因为
MongoDB使用动态模式,您在插入集合之前不需要指定文档的结构。
1.确定当前数据库:
db
2.如果当前返回的不是mydb,我们切换到mydb:
use mydb
3.用javascript创建名为j和k的文档:
j = { name : "mongo" }
k = { x : 3 }
4.在testData中插入j和k文档:
db.testData.insert( j )
db.testData.insert( k )
当你插入第一个文档时,mongod将创建mydb数据库和testData集合。
5、确认testData集合是否存在:
show collections
命令行交显示当前数据库mydb的集合列表。当前的集合除了testData.还有system.indexes集合
(所有mongod数据库都有)。
6.显示testData集合中的文档,用find()方法。
db.testData.find()
操作返回下面的结果集。ObjectID的集是唯一的。
{ "_id" : ObjectId("534b888f4945dd130c7fe057"), "name" : "mongo" }
{ "_id" : ObjectId("534b88a04945dd130c7fe058"), "x" : 3 }
所有MongoDB的文档必须有一个_id字段且具有唯一的值。这些操作不用明确指定_id字段的值,
所以mongo在插入到集合之前创建该字段的唯一的ObjectId值。
三、游标
当您查询一个集合,MongoDB中返回一个“游标”对象,它包含了查询的结果。在mongo命令行下
,然后通过游标迭代来显示结果。而不是一次返回所有结果,只遍历游标20次,显示前20个结果
,然后等待请求遍历其余结果。在命令行下,等待使用输入命令遍历下一个结果集。
用循环迭代游标
开始这个过程之前,确保在一个集合中至少有25个文档被插入.
1.在MongoDB的JavaScript命令行,查询TESTDATA返回的结果集的游标对象赋给一个变量c:
var c = db.testData.find()
2.通过使用一个while循环来遍历C变量,打印完整的结果:
while ( c.hasNext() ) printjson( c.next() )
如果当前游标有文件hasNext()函数返回true。.next()方法返回下一个文件。该printjson
()方法用类似JSON的格式显示文档。
该操作将显示20个文件。例如,如果有文件名为x的单个字段,操作显示字段以及每个文件的
ObjectID:
{ "_id" : ObjectId("51a7dc7b2cacf40b79990be6"), "x" : 1 }
{ "_id" : ObjectId("51a7dc7b2cacf40b79990be7"), "x" : 2 }
{ "_id" : ObjectId("51a7dc7b2cacf40b79990be8"), "x" : 3 }
{ "_id" : ObjectId("51a7dc7b2cacf40b79990be9"), "x" : 4 }
{ "_id" : ObjectId("51a7dc7b2cacf40b79990bea"), "x" : 5 }
{ "_id" : ObjectId("51a7dc7b2cacf40b79990beb"), "x" : 6 }
{ "_id" : ObjectId("51a7dc7b2cacf40b79990bec"), "x" : 7 }
{ "_id" : ObjectId("51a7dc7b2cacf40b79990bed"), "x" : 8 }
{ "_id" : ObjectId("51a7dc7b2cacf40b79990bee"), "x" : 9 }
{ "_id" : ObjectId("51a7dc7b2cacf40b79990bef"), "x" : 10 }
{ "_id" : ObjectId("51a7dc7b2cacf40b79990bf0"), "x" : 11 }
{ "_id" : ObjectId("51a7dc7b2cacf40b79990bf1"), "x" : 12 }
{ "_id" : ObjectId("51a7dc7b2cacf40b79990bf2"), "x" : 13 }
{ "_id" : ObjectId("51a7dc7b2cacf40b79990bf3"), "x" : 14 }
{ "_id" : ObjectId("51a7dc7b2cacf40b79990bf4"), "x" : 15 }
{ "_id" : ObjectId("51a7dc7b2cacf40b79990bf5"), "x" : 16 }
{ "_id" : ObjectId("51a7dc7b2cacf40b79990bf6"), "x" : 17 }
{ "_id" : ObjectId("51a7dc7b2cacf40b79990bf7"), "x" : 18 }
{ "_id" : ObjectId("51a7dc7b2cacf40b79990bf8"), "x" : 19 }
{ "_id" : ObjectId("51a7dc7b2cacf40b79990bf9"), "x" : 20 }
四、用数组操作游标
下面的程序可让您操纵游标对象就好像它是一个数组一样:
1.在MongoDB的JavaScript命令行,查询TESTDATA返回的结果集的游标对象赋给一个变量c:
var c = db.testData.find()
2.查找文档数组索引4,使用以下操作:
printjson( c [ 4 ] )
MongoDB返回结果像这样:
{ "_id" : ObjectId("51a7dc7b2cacf40b79990bea"), "x" : 5 }
当您用数组索引符号访问游标,mongo先调用cursor.toArray()方法,并加载游标返回的所有
文档到RAM。然后把所得到应用到数组。对于非常大的结果集,mongo有可能会耗尽可用内存。
五、查找指定的文档
在此过程中,你通过为find()方法传递一个参数来在TESTDATA中查找特定文档。查询的文档
中有符合查询条件的,返回一个文件。
在mongo 命令行,用find()方法从所有的文档中查找x字段的值为18的文档:
db.testData.find( { x : 18 } )
MongoDB中返回一个文档符合这个标准:
{ "_id" : ObjectId("51a7dc7b2cacf40b79990bf7"), "x" : 18 }
从一个集合中返回一个文档
用findOne()方法从一个集合中返回一个文档。 就像加参数的find().
Testdata集合中检索一个文档:
db.testData.findOne()
限制结果集的文档的数目
为了提高性能,您可以限制通过网络接收的应用程序的数据的数量。
要指定在结果集中的文件的最大数量,用 limit(),如下面的命令:
db.testData.find().limit(3)
MongoDB将返回以下结果,具有不同的ObjectId值:
{ "_id" : ObjectId("51a7dc7b2cacf40b79990be6"), "x" : 1 }
{ "_id" : ObjectId("51a7dc7b2cacf40b79990be7"), "x" : 2 }
{ "_id" : ObjectId("51a7dc7b2cacf40b79990be8"), "x" : 3 }
近期文章
- python:object()函数
- mongodb数据备份用mongorestore恢复后没有数据
- mongodb roles
- windows2003远程桌面连接蓝屏,不显示桌面图标的解决办法。
- centos下apache gb2312页面中文乱码解决办法
- 设置mongodb做为windows服务自动运行
- windows2008中IIS7配置fastcgi+php
- 服务器连接远程桌面后无法看到桌面的解决办法
- iis日志导入sql server数据库
- 7-zip命令行参数详解
- iptables如何指定一个范围内的IP地址或端口
- mongod2.6服务无法启动,权限问题
- CentOS下编译安装mysql 5.1,支持中文(GBK)
- ERROR 1045 (28000): Access denied for user root@localhost(using password: YES)
- CentOs删除文件夹下所有文件及文件夹并保留该文件夹
- CentOS 6.4: Make Command not Found
- CentOS下安装成功mysql的提示信息
- mysql configure编译完成后的提示信息
- CentOS上安装gcc的方法
- MongoDB创建root角色用户(超级管理员)