zoukankan      html  css  js  c++  java
  • mongo实践-透过js shell操作mongo

    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_dumpuser

    安全访问

    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分为四个段 时间戳、主机号、进程号、计数器

    http://www.myexception.cn/javascript/1227152.html

  • 相关阅读:
    Verilog手绘FVH信号
    Verilog编码规范与时序收敛
    关于DDS的基础知识
    阅读ug949-vivado-design-methodology笔记
    在windows系统上使用pip命令安装python的第三方库
    pandas第一课
    视频外同步信号研究---fvh
    FPGA调试技巧
    关于FIFO异步复位的问题
    搭建一个microblaze的最小系统
  • 原文地址:https://www.cnblogs.com/seasonzone/p/3994886.html
Copyright © 2011-2022 走看看