`
wang7839186
  • 浏览: 41824 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

mongo实践-通过js shell操作mongo

阅读更多

保存命令:

j={name:"wangjingjing",age:15}

db.user.save(j);

 

查询命令:

var cursor = db.user.find();

while(cursor.hasNext())printJson(cursor.next());

 

printJson(cursor[4]);

 

var arr = cursor.toArray();

 

db.user.find({name:"wangjingjing"});

 

//select age from user where name='wangjingjing'

db.user.find({name:"wangjingjing"},{age:true});

 

db.user.findOne();

 

db.user.find().limit(3);

 

修改命令:

db.user.update({name:"wangjingjing"},{$set:{name:"jingjing"}});

db.user.update({name:"wangjingjing"},{$inc:{age:10}}); //给age增加10

db.user.update({name:"wangjingjing"},{$push:{habit:["basketball","football"]}});

 

删除命令:

db.user.remove({name:"jingjing"})

 

高级查询命令:

db.user.find({x:{$gt:3}}); x>3

db.user.find({x:{$lt:3}}); x<3

db.user.find({x:{$gte:3}}); x>=3

db.user.find({x:{$lte:3}}); x<=3

db.user.find({x:{$lte:3,$gte:2}}); 2<=x<=3

 

var x = {x:[3,4,5]}

db.user.save(x);

db.user.find({x:{$all:[3,4]}}) 匹配

db.user.find({x:{$all:[3,4,6]}}) 不匹配

db.user.find({x:{$in:[3,4,6]}}) 匹配

db.user.find({x:{$nin:[3,4,6]}}) 匹配

 

db.user.find({x:{$exsits:true}}) 匹配有包含x的属性

 

db.user.find({x:{$mod:[6,1]}}) 取模6等于1

 

db.user.find({x:{$ne:1}}) x!=1

 

db.user.find({$or:[{name:"jing"],[age:10]}) 或操作

 

db.user.find({x:{$size:3}}) 数组x的元素个数为3

 

db.user.find().skip(1).limit(1).count(true); 第二个记录

 

db.user.find().sort({age:1});升序

db.user.find().sort({age:-1});降序

 

导出文件

mongoexport -d user -c user -o user.bat 

 

导入文件

mongoimport -d user -c user user.bat

 

备份文件

mongodump -d user -o my_user_dump

 

恢复文件

mongorestore -d user my_user_dump\user\

 

安全访问

mongod --bind_ip 192.168.1.103 --port 28018

mongo 192.168.1.103:28018

 

建立索引

db.user.ensureIndex({age:1},{background:true}); 升序

db.user.getIndexes();

 

解释执行

db.user.find().explain()

 

复制集

Replica Set使用指南(在单机上配置)

简介:

一个Replica-Set是在一组N个mongod服务一起协作来进行后援支持。

搭建一个replica-set需要两个步骤:在每个节点上启动服务;初始化这个set。

标准模式下,1个set包含3个节点。我们现在就在同一个服务器上搭建一个。

一旦mongod服务节点都启动了,我们需要一个指令来初始化这个set。几秒钟之后,三个节点中会选择出一个

主控节点(master node),之后我们就可以向这个set中写入或者查询数据了。

 

步骤一:

分别为3个节点分配数据存放的位置空间

$  mkdir -p /data/r0

$  mkdir -p /data/r1

$  mkdir -p /data/r2

 

之后,使用 --replSet 参数启动mongod服务,这个参数需要我们指定replica-set的名称,这里我们称我们的这个set为“foo”

$ mongod --replSet foo --port 27017 --dbpath /data/r0

$ mongod --replSet foo --port 27018 --dbpath /data/r1

$ mongod --replSet foo --port 27019 --dbpath /data/r2

 

现在3个节点都跑起来了。这时,每个节点应该都打出如下的警告信息:

————————

Mon Aug  2 11:30:19 [startReplSets] replSet can't get local.

system.replset config from self or any seed (EMPTYCONFIG)

————————

不要紧张,这是因为我们还没有初始化这个set.

 

步骤二:

我们可以从任意3个节点中的一个来运行 replSetInitiate 命令来初始化这个set.

 

[kyle@arete ~$]$ mongo localhost:27017

MongoDB shell version: 1.6.3

connecting to: localhost:27017/test

> config = {_id: 'foo', members: [

                          {_id: 0, host: 'localhost:27017'},

                          {_id: 1, host: 'localhost:27018'},

                          {_id: 2, host: 'localhost:27019'}]

           }

 

> rs.initiate(config);

{

   "info" : "Config now saved locally.  Should come online in about a minute.",

    "ok" : 1

}

 

我们需要配置config这个对象,指明set的名称和这个set下的成员。然后将config传递给rs.initiate().

如果到这里一切都顺利的话,我们会得要一个信息说:这个set会在1分钟内启动完成。在这个时间段内,有一个

节点会被选择为主控节点(master节点)。

 

如果想查看这个set的当前状态的话,使用rs.status这个命令:

> rs.status()

{

"set" : "foo",

"date" : "Mon Aug 02 2010 11:39:08 GMT-0400 (EDT)",

"myState" : 1,

"members" : [

{

"name" : "arete.local:27017",

"self" : true,

},

{

"name" : "localhost:27019",

"health" : 1,

"uptime" : 101,

"lastHeartbeat" : "Mon Aug 02 2010 11:39:07 GMT-0400",

},

{

"name" : "localhost:27018",

"health" : 1,

"uptime" : 107,

"lastHeartbeat" : "Mon Aug 02 2010 11:39:07 GMT-0400",

}

],

"ok" : 1

}

 

这里有个值"myState",如果这个值为1,说明是主控节点(master);如果是 2 ,说明是从属节点(slave).

 

在同一时刻,每组 Replica Sets 只有一个 Primary,用于接受写操作。而后会异步复制到其他成员数据库中。一旦 primary 死掉,会自动投票选出接任的 primary 来,原服务器恢复后成为普通成员。如果数据尚未从先前的 primary 复制到成员服务器,有可能会丢失数据。

 

PRIMARY> db.test.insert({“name”:”foobar”,”age”:25})

PRIMARY> db.test.find()

{ “_id” : ObjectId(“4f4f38fc47db2bfa5ceb2aee”), “name” : “foobar”, “age” : 25 }

SECONDARY> db.test.find()

error: { “$err” : “not master and slaveok=false”, “code” : 13435 }

SECONDARY> db.test.insert({“name”:”foobar”,”age”:25})

not master

 

在主库上设置slaveok=ok (经过试验,发现需要在从库上设置ok)

PRIMARY> db.getMongo().setSlaveOk()

SECONDARY> use test

switched to db test

SECONDARY> db.test.find()

{ “_id” : ObjectId(“4f4f38fc47db2bfa5ceb2aee”), “name” : “foobar”, “age” : 25 }

 

然后kill掉主库,会候选出一个作为主库,当修复后,就变成从库了

 

 

插入数据时生成的id分为四个段 时间戳、主机号、进程号、计数器

 

0
0
分享到:
评论

相关推荐

    mongoshell-crud:Mongo Shell Crud实施

    总结,Mongo Shell是MongoDB的重要组成部分,它提供了丰富的JavaScript API来进行数据库操作。理解并熟练掌握Mongo Shell的CRUD操作对于MongoDB的日常管理和开发至关重要。通过上述示例,你应该能够开始在Mongo ...

    nosqlbooster4mongo-5.2.8.zip

    4. **脚本编辑器与执行器**:内置的代码编辑器支持JavaScript和MongoDB Shell命令,便于编写和执行复杂的数据库操作脚本。 5. **性能分析**:NosqlBooster具有查询性能分析功能,可以评估查询效率,帮助优化数据库...

    mysql-mongo-for-mysql-dba-webinar.pdf

    关于操作,MongoDB提供了多种工具,比如`mongod`进程用于运行数据库服务,`mongo` shell则是交互式命令行工具。在MySQL中,我们有各种操作如增删改查,MongoDB同样支持这些,但实现方式不同,例如,MySQL中的复制...

    tern-mongo-shell:Tern 插件添加了对 MongoDB Shell 的支持

    tern-mongo-shell 是一个插件,它为 JavaSript 代码智能系统添加了对支持。结构项目的基本结构如下: mongo-shell.js tern 插件。 使用 CodeMirror 的带有 express tern 插件的demos/演示。链接另见

    mongo-redact:编辑从 MongoDB 读取的敏感信息,同时保留数据的形状

    1.直接加载脚本(一次性使用) 使用以下命令调用mongo shell: mongo &lt;basepath&gt;/mongo-redact.js --shell它将首先加载mongo-redact.js ,然后像往常一样打开 shell。 将部分替换为mongo-redact.js文件所在的实际...

    sysbench-mongo:MongoDB javascript shell 的 sysbench 克隆

    1. **安装**: 获取 `sysbench-mongo` 源代码,例如从压缩包 `sysbench-mongo-master` 解压后得到源码。 2. **配置**: 配置工具,如设置 MongoDB 服务器的连接信息。 3. **运行**: 在 MongoDB 的 JavaScript shell 中...

    my-mongo-associations-exercise

    :请遵循以下活动:活动运行seeds.js ,转到mongo shell并查看集合和文档: mongo mongo-associations-lessonshow collectionsdb.meetups.find().pretty()// repeat for each collection在白板上,绘制数据模型。...

    nosqlbooster4mongo-5.2.11.zip

    10. **脚本编辑器**:内置的JavaScript脚本编辑器允许用户直接在MongoBooster中编写和运行MongoDB的Shell命令或自定义脚本,进一步提升效率。 综上所述,MongoBooster 5.2.11 是一个全面的MongoDB管理解决方案,...

    mongo-hacker:针对黑客的MongoDB Shell增强功能

    `mongo-hacker`项目是一个开源项目,主要由JavaScript编写,它通过扩展MongoDB Shell的功能,为用户提供了更多实用且强大的特性。这个项目的主要目标是使MongoDB的命令行界面更加友好,增强其可读性和可编程性,从而...

    mongo-master.zip

    "mongo-master.zip"很可能是MongoDB的源代码压缩包,这通常意味着它包含了MongoDB的主要源代码文件,供开发人员学习、调试或定制。 MongoDB的源码分析可以提供深入理解其内部工作原理的机会,这对于数据库管理员、...

    nosqlbooster4mongo-5.1.10.exe.zip

    5. **脚本编辑器**:内置的脚本编辑器支持JavaScript,可以编写和执行MongoDB的shell命令,进行复杂的数据库操作和自动化任务。 6. **查询优化**:NosqlBooster提供查询分析和优化工具,帮助用户找出性能瓶颈,提升...

    nosql安装文件4mongo-6.0.4.rar

    MongoDB是一种流行的NoSQL数据库系统,它以非关系型数据模型为核心,提供了高效、可扩展的数据存储解决方案。...通过安装“nosqlbooster4mongo-6.0.4.exe”文件,你就可以开始体验这个版本带来的所有功能了。

    robomongo+Mongovue

    4. **脚本支持**:内置MongoDB Shell,可直接在界面上编写和执行JavaScript脚本。 5. **安全特性**:支持身份验证和SSL连接,确保数据安全。 6. **导出与导入**:可以将数据导出为多种格式,如CSV、JSON,同时也支持...

    nosqlbooster4mongo-7.0.8,MongoDB连接工具

    4. **脚本编辑器**:NosqlBooster 4 MongoDB内置了一个代码编辑器,支持MongoDB的Shell命令和JavaScript代码,具有代码高亮、自动补全和错误检查等功能,便于编写和测试脚本。 5. **数据导入导出**:工具提供了数据...

    The MongoDB Database

    mongo - The database shell (uses interactive javascript). Download MongoDB https://www.mongodb.com/try/download/community Using homebrew brew tap mongodb/brew Using docker image docker pull mongo ...

    less-mongo:一组简单的实用程序,可减少输入内容并从mongo shell中获取更多信息

    mongo --shell less.mongo.js 要打印版本信息: &gt; less() 要获取所有可能选项的列表,请键入: &gt; less.help() 如果您有兴趣在less.mongo中投入更多时间,请查看 。 它包含一个完整的教程,其中包含必要的资源,...

    mongoDB mongoVUE

    6. **脚本支持**:MongoVUE内置了MongoDB shell,用户可以直接在界面上编写和执行JavaScript脚本,这对于执行复杂的数据库操作或自动化任务非常有用。 7. **安全性**:MongoVUE提供了一种安全的途径来管理数据库...

    mongo客户端

    在MongoDB生态系统中,有多种客户端工具供开发人员和管理员选择,包括官方提供的MongoDB Compass和命令行工具`mongo shell`,以及第三方工具如Robo 3T(原名Robomongo)、MongoBooster等。MongoBooster是其中一款受...

    nosqlbooster4mongo-5.2.10.dmg

    5. **脚本编辑和执行**:提供了一个集成的JavaScript代码编辑器,可以编写和运行MongoDB的shell命令或JavaScript脚本,方便进行批量操作和自动化任务。 6. **备份和恢复**:支持一键备份和恢复数据库,保障数据的...

    mongo-scripts:有用的 mongo 脚本

    这些脚本通常通过 MongoDB 的 shell 或者命令行工具来运行,利用 JavaScript 语言的强大功能来增强数据库操作。 在这个名为 `mongo-scripts-master` 的压缩包中,我们可以期待找到一系列与 MongoDB 相关的脚本,...

Global site tag (gtag.js) - Google Analytics