MongoDB学习笔记,二〇一五081二mongodb增加和删除改查和express的知情

一、  高端查询

Insert                                                                                       

设置数据库mongodb(非关系型数据库)

  • 高性能
  • 轻松安插
  • 轻松读取
  1. www.mongodb.com下载对应系统的版本

  2. tar zxvf 解压

  3. 在数据库文件夹下创造自个儿的数据库文件夹

  4. bin文件夹下的
    mongo –dbpath=../名字_美高梅开户网址 ,db(默许端口270一七)

  5. 新建终端进入bin目录
    执行./mongo

  6. 编写脚本vim mongo.sh

     #!/bin/bash
     cd /home/fengtianhe/mongodb/bin/
     ./mongod --dbpath=../fth_db
    

//展现数据库

show dbs;

//使用数据库,假使未有此数据库,就创办数据库

use test;

//创制数据库后不展现,要求插入一条数据插入数据

db.user.insert({“name”:”fth”,”tel”:”12345679811″});

//查询

db.user.find();

//插入多条

db.user.insertMany([{},{},{}]);

//格式化显示

db.user.find().pretty();

//使用数据库

use test;

//显示表

show collections;

//更新

db.user.update({sex:{$gt:”1″}},{$set:{tel:”132″}});

//查看数据库版本

db.version()

//获取表的名字

db.getCollectionNames();

//查询当前所属数据库

db.getName();

//删除数据

db.user.remove({name:”fth”});

//增加数据

db.user.update({name:”fth”},{$set:{“zhiye”:”xueshen”}},true);


  1. 查询操作符
    1. 标准操作符:db.collection.find({“田野同志”:{$gt/$lt/$gte/$lte/$eq/$ne:value}});
    2. 合作全体:db.collection.find({age:{$all:[6,8]}});//字段的数组中符合全体口径才行。
    3. 判断字段存在:db.colletion.find({田野同志:{$exists:true}})//还可用以remove等。
    4. Null值的拍卖:db.collection.find({田野:{“$in”:null,”$exists:true}});
    5. 取模运算:db.colletion.find({田野同志:{$mod:[10,1]}});
    6. $ne不等于
    7. $in包括
    8. $nin不包含    //$ini和$ne的分别便是ini用于数组质量评定
    9. $size相称数组成分个数
    10. Count查询记录条数:db.田野同志.find().count();
    11. Skip显示重返记录的起源:db.students.find().skip(肆),跳过后面四条
    12. Sort排序
    13. Distinct去重:db.collection.distinct(“田野”);查看某字段值的门类。
    14. Group分组计算
  2. 询问语法
    1. 数组内容的询问:通过询问数组的一天性质,能够得知整条文书档案。
    2. 内嵌文书档案的询问:查询文书档案中田野同志字段中name属性能够find({“田野(field).name”:*});
    3. 正则表明式相称查询
    4. $where查询:命令中不包罗where关键字
  3. 壹道查询
    1. 步骤

MongoDB在执行插入时,首先会将插入的数量转换来BSON格式。然后MongoDB数据库会对BSON进行解剖,并检讨是或不是存在_id建。

MongoDB学习笔记,二〇一五081二mongodb增加和删除改查和express的知情。express 框架

  1. 全局安装:

     npm install -g express-generator
    
  2. 创立项目:

     express -e 项目名
    

views 视图
routes 路由
app.js 入口文件

  1. 设置外部正视库 npm install

  2. 启动 npm start

  3. 修改首页 vim view/index.ejs

  4. 修改路由 routes/index.js

    router.get(‘/’, function(req, res, next) {
    res.render(‘index’, { title: ‘Express’ });
    });


1           u=db.user.findOne({author:“ken”});

>doc = {
    "_id" : 1,
    "author" : "yyd",
    "title" : "MongoDB Test",
    "text" : "this is a test",
    "tags" : [
    "love",
    "test"
    ],
    "comments" : [
    {
        "author" : "yyd_guest",
        "comment" : "yes"
    },
    {
        "author" : "yyd_admin",
        "comment" : "no"
    }
    ]
}

> db.yyd.insert(doc);

作业1:整理mongodb增加和删除改查的笔记

2           for(var p=db.posting.find({author:u.author});p.hasNext();)
{printjson(p.next().title)};

 

布置数据

MongoDB是面向文书档案存款和储蓄的数据库,文书档案结构格局叫BSON(类似JSON)

db.c1.insert({name:"user1"});
db.c1.save({_id:1, name:"user1"}); //save()如果已经存在就不会插入,如果不存在就插入这里要与id相同的值才不会被插入,save就是id相同就更新,没有相同id就插入
for(x=1;x<=1000;x++) db.peroson.insert({Name:"zhuima"+x,Age:x%100,Address:x+".Number Beijing China"})//批量插入数据

三          
上边的深入分析:先通过名称找寻文书档案,再通过获取的文书档案中的名称打字与印刷title

Query                                                                                       

去除数据
db.c1.remove();
db.c1.remove({name:"user1"});
db.peroson.remove({Age:{$gt:1,$lt:10}})//批量删除
  1. 游标和积存进度
    1. 游标:结果缓存再读取
    2. 积累进度

全部探究

查询数据
db.c1.find({name:"user1"},{name:1, age:1});
db.peroson.find({Age:{$gt:33,$lt:44}});//按条件查询

1           声明:db.system.js.save({_id: addNumbers
value:funtion(x,y){return x+y}});

美高梅开户网址 1

条件表明式
符号 名称
$gt 大于
$lt 小于
$gte 大于等于
$lte 小于等于
$ne 不等于

2           通过id调用:db.eval(‘addNumbers(3,4)’);

回去除了 tags 字段外的装有字段

修改数据

语法 db.collection.update( criteria, objNew, upsert, multi )

参数表明:

  • Criteria:用于安装查询条件的目的
  • Objnew:用于安装更新内容的对象
  • Upsert:假如记录已经存在,更新它,不然新添八个笔录
  • Multi:假若有多个符合条件的笔录,全部翻新
    注意:默许情况下,只会更新第二个符合条件的笔录

三           注脚后间接调用:db.eval(function(){return 3+三});

美高梅开户网址 2

主意求证
  1. $set //修改字段

db.c5.update({name:”user1″},{$set:{age:10}},0,1);

  1. $inc //对字段举行加 a = a+壹

db.c5.update({},{$inc:{age:-10}},0,1);

  1. $unset //删除一个字段

db.c5.update({},{$unset:{age:1}});

  1. $push

db.c5.update({},{$push:{arr:1}}); //压入二个值进入数组

  1. $pushAll

db.c5.update({}, {$pushAll:{arr:[2,3,4]}}); //压入多少个值进入数组

  1. $pop

db.c5.update({}, {$pop:{arr:一}}); //弹出数组中的第一个成分

  1. $addToSet

{$addToSet: {field: value}}

如果filed是一个已经存在的数组,并且value值不在其中,那么value加入到数组中

filed不设有,那么把value当成一个数组存款和储蓄到filed中
filed是二个早就存在的非数组类型,那么将会报错

  1. 恢宏肜户

{$addToSet:{a:{$each:[1,2,3,4,5,6]}}};

  1. $pull
    语法:{$pull:{field:_value}}
    功能: 若是田野先生是一个数组,那么删除符合_value检索条件的笔录
    假设田野同志是贰个曾经存在的非数组,那么会报错

  2. $pullAll

语法: {$pullAll:{field:value_array}}
作用: 同$pull类似,只是value的数据类型是1个数组

  1. $rename
    语法:{$rename:{old_field_name: new_field_name}}
    成效:重命名钦定的字段名称

  2. 独特操作符:$

$操作符代码查询记录中第3个门户万分原则的笔录项
$db.c5.update({“arr.title”:”linx”}, {$set:{arr.$.title:”I lover
linx”}});

专注:
在数组中用$合作$unset操作符的时候,效果不是剔除的要素,而是把相配的要素变为null
$db.c5.update({“arr.title”:”php”},{$unset:{arr.$:1}});

2、  高档更新

回去 tags = test 除了 comments 的有着列

统计:
db.c1.count();
db.c1.find().count();
//count(1); 里面有一个条件,如果为1,那么会取条件,如果为0不会理会条件语句
  1. 多少更新命令
    1. Update:db.collection.update(criteria,objNew,upsert,multi)

美高梅开户网址 3

排序:
db.c1.find().sort(age:1); //1是升序 0是降序

一           Criteria:此处填写查询条件

返回 id=1 的 title 字段

取几个
db.c1.find().limit(4);

2           objNew:用$inc的操作

美高梅开户网址 4

$exists操作检查贰个字段是还是不是留存
db.c2.find({age:{$exists:1}}); 测试一个字段是否存在

叁          
upsert:逻辑操作决定在更新操作的时候,未有符合条件的时候是或不是插入。

  • <,
    <=, >, >=
$in 操作看似于古板关周密据库中的IN
db.c1.find({age:{$in:[1,2,3]}})

四           multi:依据规范查找的多多条的时候,决定多条记下是不是同有时候更新。

美高梅开户网址 5

$nin 与$in相反
db.c1.find({age:{$nin:[2,3,4]}});
  1. save:借使集结里面有同id的文书档案,将被遮盖,假设未有,就增加。
  2. 多少更新操作符
    1. $inc:{$inc:{田野先生:value}} //对有些字段的数值文章加法
    2. $set:{$set:{田野(field):value}} //直接修改有个别字段的值
    3. $unset:{$unset:{田野先生:1}} //删除字段
    4. $push:{$push:{田野同志:value}} //针对数组类型增多值
    5. $pushAll:{$pushAll:{field:[value1,value2]}}
      //针对数组类型增加多少个值
    6. $addToSet:{$addToSet:{field:[value1,value2]}}
      //针对数组类型增添数组
    7. $pop:{$pop:{田野(field):-壹}} //删除数组内的一个值
    8. $pull:{pull:{field:_value}} //从数组中删除八个极度value的值
    9. $pullAll:{pullAll:{field:[value1,value2]}}
      //能够三次删除数组内八个值
    10. $rename:{$rename:{old_name:new_name}} //字段重命名
  3. 高端本性
    1. Capped Collection

大于 $gt、**小于 $lt、不唯有等于 $gte、小于等于 $lte**

$or 查看钦点多个规格的记录,跟sql的or大致
db.c1.find({$or:[{name:"user1"},{name:"user2"},{age:10}]});

1           先预订空间的轻重,用完现在就老化溢出。

  • $all
$nor 与$or相反过滤钦点的规则
db.c1.find({$nor:[{name:"user1"},{name:"user2"},{age:10}]});

二           发挥最大的天性,在笔录日志不该创设索引。

$all 操作看似$in 操作,不过差别的是,$all
操作须要数组里面包车型客车值全体被含有在回到的笔录里面。

NULL查询(有一个值是为null,可能1个值不存在)
db.c4.find({age:null}); //列出所有为null或者不存在的值

第二种写法

db.c4.find({age:{$exists:1, $in:[null]}});
//两个条件,一个是exists必须存在,二是为null的数据

三           发挥最大的习性,读比写多的时候绝不在地点创建索引。

美高梅开户网址 6

作业2:安装express,领会路由,尝试把express改成mvc

4           Ps:log speed 是快,data speed 慢。

  • $exists
  1. GridFS规范

$exists 操作检查一个字段是还是不是存在。

一           海量存款和储蓄

美高梅开户网址 7

  1. 因为BSON的深浅限制,大文件会分手。
  2. Files(包蕴元数据对象),chunks(2进制块)

$exists:true代表回到存在那一个键的值。

二           命令行工具

$exists:false代表回到不设有这一个键的值。

  1. Mongofiles put 上传
  2. Mongofiles get 下载
  3. MapReduce编制程序模型
  • $mod

    db.user.find(“this._id%2==1”);
    db.user.find({_id:{$mod:[2,1]}});

一           Map实行分组

两句话同样的效益。

2           Reduce聚合计算

  • $ne

三           Result获取结果

$ne 意思是 not equal,不等于。

四           Finalize格式化输出

美高梅开户网址 8

五           Options定制输出

  • $in

$in 操作看似于古板关周密据库中的 IN。

美高梅开户网址 9

  • $nin

$nin 跟$in 操作相反。

  • $or

美高梅开户网址 10

  • $nor

$nor 跟$or 相反。

  • $size

$size 操作将会询问数老板度等于输入参数的数组。

美高梅开户网址 11

  • skip

跳过前 2 条记录。

美高梅开户网址 12

  • limit

每页重回 三 条记下

美高梅开户网址 13

  • sort()

sort()方法对回到记录集依据内定字段举办排序重临,一 代表升序,-1表示降序。

美高梅开户网址 14

  • count()

count()方法再次回到查询记录的总额目。

美高梅开户网址 15

 

Remove                                                                                     

美高梅开户网址 16

 

Update                                                                                     

  • update()

    db.collection.update( criteria, objNew, upsert, multi )

参数表明:

Criteria:用于安装查询条件的靶子

Objnew:用于安装更新内容的目的

Upsert:假若记录已经存在,更新它,不然新增添二个记下

Multi:如若有四个符合条件的记录,全体立异

留神:暗中认可意况下,只会更新第四个符合条件的笔录

  • save()

若果存在创新它,假如不存在,新增加记录。

美高梅开户网址 17

  • $inc

增加1,对int等有效。

对一个_id=三 的 user 的年华实行加 一,三种方法。

美高梅开户网址 18

美高梅开户网址 19

  • $set

    { $set : { field : value } }

把 田野同志 的值设置成 value,当 田野 不设有的时候,扩展贰个字段,类似 SQL 的
set 操作,value 接济具有项目。

  • $unset

    { $unset : { field : 1} }

      删除给定的字段 田野(field)。

  • $push

    { $push : { field : value } }

比方 filed 是几个早就存在的数组,那么把 value 追加给 田野同志;

若果 田野(field) 原来不设有,那么新增 田野(field) 字段,把 value 的值赋给 田野(field);

假若 田野(field) 存在,不过不是多个数组,将会出错。

  • $pushAll

    { $pushAll : { field : value_array } }

效益同$push,只是这里的 value
是数组,相当于对数组里的每2个值进行$push操作。

  • $addToSet

    { $addToSet : { field : value } }

若是 filed 是三个曾经存在的数组,并且 value 不在当中,那么把 value
插足到数组;

一旦 filed 不设有,那么把 value 当成二个数组格局赋给 田野先生;$pop

借使 田野先生 是3个业已存在的非数组类型,那么将会报错。

  • $pop

    { $pop : { field : 1 } }

除去数组中最后二个成分

{ $pop : { field : -1 } }

删除数组中率先个成分

  • $pull

    { $pull : { field : _value } }

假定 田野(field) 是四个数组,那么删除符合_value 检索条件的记录;

万1 田野 是1个业已存在的非数组,那么会报错。

  • $pullAll

    { $pullAll : { field : value_array } }

  • $rename

    { $rename : { old_field_name : new_field_name }

重命名钦命的字段名称。

 

 

转发请注解出处:

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图