zoukankan      html  css  js  c++  java
  • mongo数据库的一些命令(对于新同学,按照我的步骤连一遍即可)

    进入mongo

    mongo

    查看数据库

    show dbs;/show databases();

    第一个命令简单(admin和local数据库是系统自带的)

     

    进入/创建数据库

     use 数据库名字(如果有此数据库则进入,如果没有则会添加一个,)

    新的数据库因为没有数据,所以show dbs;查看数据库不会显示,等我们在新的数据库内插入数据后show dbs查看数据库;就能看的到了(下面会讲)

     

    插入数据

    db.你要创建的表名字.insert({"name":"B",age:20});

    解析:db和insert是数据库命令,text是你自己创建的表(如何查看表下面会讲)名字,创建的字段,要按字典形式创建,数字不用引号,其他的要引号

     

    查看你当前所在的数据库

    db

    db.getName();

     

    查看当前所在数据库的集合(也叫表)

    show.tables;

    show collections;

    两个命令都可以用

    system.indexes是系统自带的。

     

    单纯只创建集合(也叫表)不带数据,上面db.text.insert({})是创建表是插入数据

    db.createCollection('good');

    good:是你你自己创建集合的名字

    集合的命名:

    ① 不能是空字符串(“ ”)

    ② 不能包含字符(空字符)

    ③ 不能使用system.的前缀(系统保留)

    ④ 建议不包含保留字 ”$”

    ⑤ 用.分割不同命名空间的子集合(如:blog.users, blog.posts)

     

    删除集合

    db.good.drop()

    good:是你要删除的集合的名字

    返回true是说删除成功,如果你要删除不存在的集合会返回false

     

    删除数据库:

    db.dropDatabase();

    查看当前数据状态

    db.stats();

    以上就是mongo的大致命令,

     

    查询表内所有字段

    db.当前集合(表).find();

     

     

    写入数据

    一条一条的插入数据

     

    一次性插入多条

    db.数据表.insert([{},{},{}.......])

    多维数据对象添加

    db.goods.insert({name:'xiaomi5',price:1999,weight:156,number:45,area:{province:'beijing',city:'beijing'}})

     

    数组信息的添加

     

    示例:

    db.goods.insert({name:'xiaomimax',price:2000,weight:180,number:100,area:{province:'beijing',city:'beijing'},color:['blank','white','red']})

    保存数据

    db.集合名称.save(文档)

    _id如果数据不存在则添加,如果数据存在则修改(必须是下划线_id,不能是id)

    修改id为5的年龄

    .pretty():

    mongodb的find().pretty()方法的作用。

    使得查询出来的数据在命令行中更加美观的显示,不至于太紧凑。

     

     

    新增数据的另外一种方法

    使用一个变量接收

     

    数据查询

    查询所有(上面讲过)

    db.数据表.find();

     

    查询一条

    db.数据表.findOne();注意大小写

     

    条件限制查询

    db.数据表.find(条件);

     db.数据表.findOne(条件);

     

     

    范围条件查询

    关键字:$gt:>   $lt:<    $gte:>=   $lte<=

    db.goods.find({price:{‘$gt’:1005}})

    注意:关键字$gt左右必须有引号,在命令行:单双引号都可以

    $gt:>

     

    $gte:>=

    $lt:<    

     

      $lte<=

     

    设置多个查询条件

    db.数据表。find({条件1,条件2})

    例如:要求价格大于1000并且重量小于100的

    db.goods.find({price:{‘$gt’:1000},weight:{‘$lt’:100}})

    或者通过严格等于的条件进行查询复合查询

    例如:价格大于1000,并且重量等于50

    db.goods.find({price:{'$gt':1000},weight:50})

    多维字段的查询

    db.表.find({‘key.name’:值})

     db.goods.find({'area.city':'beijing'});

    db.表.find({key.name:{‘$gt’:值},key2.name2:{‘$lt’:值}})

    数组条件的限制

    db.表.find({数组的那个字段名:val})

    //数组元素值  有 val 即可(存在一个元素)

    列如:db.goods.find({color:’red’})   //查询颜色有红色记录条数,满足一个元素即可

    地下这种方法必须按照文档格式查询,位置不能错,不能多,不能少,不能写错

     

    db.表.find({字段(数组):{‘$all’:[v1,v2]}})  

    ////数组元素值  存在 v1和v2 即可(v1,v2顺序不做要求)(存在多个元素)

    列如:db.goods.find({color:{‘$all’:[‘red’,’white’]}})    //只要同时有黑色和绿色就可以查询出来,跟上面的那种语法的区别是没有顺序要求。

    限制查询字段

    我们刚才的查询,是显示的所有的信息字段,但是呢,实际情况操作中,我们不一定全部都用到,那么可以就需要做一个字段输出查询的一个限制。如果全部取出来的话,对于内存和带宽都一定影响,我们按需去操作就可以了。

    db.表.find({条件},{字段:1/0,字段:1/0}

    1: 查询此字段

    0: 排除此字段

    find()方法的第一个参数必须要有,如果没有条件的话,就是{}

    接下来我们先查询所有,看都有什么

    然后查name字段

    查不包括name字段

     带条件查

    底下是查询年龄在20的字段,name:1是表示显示name字段,id:0是表示不显示该字段

     

    但是,下面这样是不可以的:

    规则:要输出就全部输出,要不输出就全部不输出。_id除外,可以随意设置0,1。

    设置为全部输出

    设置为全部不输出

     设置为0的字段都不显示了

    一个0一个1报错:要是0都是0,要是1都是1。

     

    我们先查所有数据

    $or查询,多个条件,满足其一即可

     db.goods.find({'$or':[{price:2000},{num:{'$lte':200}}]})

    查询goods表内的价钱在2000或者num小于等于200,满足于其一即可 

    $in和$nin:

    in:在里面

    nin:不在里面

    先查询所有

     属于20,21,22,的数据

    db.text.find({age:{'$in':[20,21,22]}})

     

    不属于20,21,22的数据

     db.text.find({age:{'$nin':[20,21,22]}})

    $all 查询:表示完全匹配

    准备的数据如下:

    使用$in查询

    db.color.find({color:{$in:['pink','green','blue']}})

    再使用$all进行查询:

     db.color.find({color:{$all:['pink','green','blue']}})

    $all命令必须完全匹配

    数据查询---限制查询条数

    限制出2/3条数据

    数据查询--跳过记录行数

    下面命令的意思是说:skip(2)是跳过前两行记录,limit(2)显示后面的两条记录。

    db.text.find().limit(2).skip(2);

    limit()和skip()的位置可以互换。

    db.text.find().skip(2).limit(2);

    分页怎么写呢????规定的是每页显示2条数据。

    PageNow表示现在是在第几页,比如现在是在第3页。

    pageSize表示每页显示几条记录。

    按公式算:(3-1)* 2  = 4  也就是说第三页的数据是从下标为4的数据开始显示。

    现在我想显示第5页的数据:

    第一页的数据是:0  1

    第二页的数据是:2  3 

    第三页的数据是:4  5

    第四页的数据是:6  7

    第五页的数据是:8  9

    所以skip()方法里面的参数值的公式:2(n-1)   n表示当前在第几页,2表示每页显示多少条

    数据查询---排序

    1表示升序:

    -1表示降序:

    数据查询---统计

    数据查询--去重

    语法:db.集合名称.distinct(“去重域名称”,{条件})

    先查一下数据

     

    修改数据

    > db.表.update({条件},{‘$set’:{字段:值,字段:值......}})

    > db.表.update({条件},{字段:值,字段:值......})

    ① 有$set的修改:只修改设置的字段,其他字段不变化

    ① 没有$set的修改:只修改设置的字段,没有修改的字段就删除了(除了_id字段)

    删除记录  语法:db.集合名.remove(query, justOne)

    参数说明:query查询表达式是一个json数据(与sql中的where相似)。

    如:删除键名为”李世民”的数据:db.test.remove({“name”:“李世民”})

    justOne:true/false是否只删除1条,默认为false,就是删除多条数据。

    一次删除多条数据,由于默认为false,所以可以省略此参数

    一次只删除一条数据:

     

    清空所有的数据:

    db.goods.remove({});

     

    删除字段  db.表.update({条件},{‘$unset’:{字段:1/字段:0}})

    注意:设置的字段0或是1都是可以进行删除此字段的。

    扩展:修改数据

    语法:db.集合名.update(条件,数据,[是否新增默认false],[是否修改多条默认false])

    参数说明:

    参数3:修改的数据不存在则自动添加,默认false,不添加。

    参数4:是否修改所有符合条件的数据,默认false,只修改一条。

    创建测试数据:

    MongoDB这个产品是基于js引擎开发出来的。

    修改器的使用

    将{“name”:”zs1”}修改为{“name”:”zs2”}

    问题:只想修改名字,但是年龄被删除了

    解决:使用修改器。

    语法:db.集合名.update({条件},{修改器名称:{修改的键:修改的值}})

    通过修改器将zs3的年龄修改为33

     

    测试新增(第三个参数的使用)

    当我们再修改数据时,如果没有符合条件的,就直接新增加一条数据。

    现在是zs33是没有这个条数据的:

    不写第三个参数时,默认false,不添加。

    测试一次修改多条(第四个参数的使用)

    如果一次性有多条数据满足要求,那么第四个参数设为true时,就全部修改了。

    把name为zs2的age修改为250

    第四个参数:默认false,只修改一条,为true时,修改多条数据。

  • 相关阅读:
    NHibernate初学二之简单执行SQL及HQL、Linq
    NHibernate初学一之简单增删改查
    System.Func<>与System.Action<>
    C# Lambda表达式
    Lambda表达式详解
    发布订阅者模式之C#委托实现
    在WCF中实现双工通信
    设计模式---订阅发布模式(Subscribe/Publish)
    flex基础示例
    活动倒计时-兼容ios
  • 原文地址:https://www.cnblogs.com/caituntun/p/10890163.html
Copyright © 2011-2022 走看看