MongoDB三元素:
1 数据库: 和关系型数据库中数据库的层次相同,内部可以有多个集合。
2 集合: 相当于关系型数据库中的表,存储若干文档,结构不固定
3 文档: 相当于关系型数据库中的行,是Json扩展的Bson类型键值对数据 MongoDB常用的数据类型:
ObjectID:
键为_id的数据类型。是文档id,每个文档都有这个属性,默认的主键,保证每个文档唯一
可以自己指定_id的值,如果不指定,mongodb会自己维护
objectID是一个12字节的十六进制数:
前4字节是当前时间戳
接下来3字节是机器的ID
接下来2字节是mongodb的服务进程id
最后3字节是自增量
String:
字符串,最常用的数据类型,必须你是utf-8类型
Boolean:
存储布尔值 true或者false
Integer:
整数类型,可以是32位或64位与操作系统相适应
Double:
浮点数据类型。
Arrays:
数组或列表,多个值存到一个键
Object:
文档的数值类型,用于嵌入式文档
Null:
存储null值
Timestamp:
时间戳,表示从1970-1-1至今的秒数
Date:
时间,存储当前日期或者UNIX时间格式。
创建时间类型数据: new Data("YYYY-MM-DD") 集合命令:
创建集合(在使用的库里):
db.createCollection(集合名 [,选项] ) //选项是可以省略 创建一个不限制大小的集合stu:
db.createCollection("stu") 创建一个限制大小的集合stu:
db.createCollection("stu", {capped:true,size:10} )
//stu为集合的名字
//capped 为true表示限制数据总量大小 false不限制,默认为false
//size:10 表示最大能存10字节的数据,如果size小于256,都会默认创建256上限
//如果存入数据超出容量上限,会淘汰掉最先插入的数据 查看当前数据库的集合:
show collections 删除集合:
db.集合名.drop() 数据的操作: 1 插入数据:
db.集合名.insert(文档) 不指定_id的话mongodb帮我们维护
例如: db.stu.insert({name:"haha",gender:1}) 也可以指定_id
例如: db.stu.insert({_id:'20171221',name:"哈哈",gender:1}) 2 修改数据:
2.1 替换修改:
db.集合名.update(
<query>, //条件
<update>, //用该文档替换符合条件的文档来更新
{multi:<boolean>} //可选参数 默认false
//multi 为false 表示只更新第一条符合条件的数据
//multi 为true 表示所有数据都更新
) 例如:将年龄是18岁的名字改成老马,只修改第一条
db.stu.update(
{age:18}, //条件,年龄是18岁的数据
{name:"老马"} //这个文档会替换符合条件的文档做出更新,其他键值对都会丢失,只留下name
// multi 默认false 代表只更新第一条符合条件的
// {multi:true} 表示所有符合条件的数据都更新
) 2.2 指定键值对修改,不替换: $set:{}
例如:全部18岁的学生的名字改成老马,其他键值对不替换
db.stu.update(
{age:18}, //条件
{$set:{name:"老马"}}, //指定键值对修改,不丢失键值对
{multi:true} //所有符合条件的数据都修改
) 2.3 保存(如果文档的_id不存在,则新建一个,如果存在则是进行修改):
db.集合名.save(文档)
例如:db.stu.save({_id:'20160102','name':'yk',gender:1}) 2.4 删除
db.集合名.remove(
<query>, //必填参数,删除条件
{justOne:<boolean>} //可选参数
//justOne 默认false,代表删除所有符合条件的文档
//justOne 设为true 代表删除第一条符合条件的文档
) 例如:
删除全部文档
db.stu.remove({]) //条件是必选参数,全部删除要传入空{}
删除年龄为18的学生,只删除一条
db.stu.remove({age:18},{justOne:true}) 3 数据查询
基本查询 find():
db.集合名.find({条件}) //查询所有
db.集合名.findOne({条件}) //查询一条
db.集合名.find({条件}).pretty() //格式化查询结果 例如: 查询所有数据
db.stu.find({}) //查询所有数据
db.stu.find({age:18}).pretty() //年龄为18的格式化输出 3.1 比较运算符:
等于: 默认等于 没有特殊运算符
小于: $lt less than
小于等于: $lte less than equal
大于: $gt greater than
大于等于: $gte greater than equal
不等于: $ne not equal 例如:查询年龄大于18的学生:
db.stu.find({age:{$gt:18}})
3.2 逻辑运算符:
逻辑与: 默认就是与关系
逻辑或:$or:[{}] 例如:查询年龄大于18并且性别为1的学生
db.stu.find({ age:{$gt:18} , gender:1} )
例如:查询年龄大于18或者性别为0的学生
db.stu.find({ $or:[ {age:{$gt:18}},{gender:0} ] }) 逻辑或和逻辑与一起使用:
查询年龄大于18或者名字是郭靖,并且性别为1
db.stu.find( { $or:[{age:{$gt:18}},{name:"郭靖"}] , gender:1 } ) 3.3 范围运算符:
$in:[] 在其中:
年龄是18或者28的学生:
db.stu.find( { age:{$in:[18,28]} } )
$nin:[] 不在其中
年龄不是18或者28的学生:
db.stu.find( { age:{$nin:[18,28]} } ) 3.4 正则表达式匹配 "/reg /"或regex:"reg" :
查询姓黄的学生:
db.stu.find( {name: /^黄/ } ) 或者 db.stu.find( {name:{$regex:"^黄"}} ) 3.5 自定义(函数)查询$where
mongodb的终端实际上也是js的编译器,利用js匿名函数
db.stu.find({
$where:js匿名函数{
//必须返回一个bool类型的值 是查询条件
return 条件
}
}) 例如:查询年龄大于30的学生
db.stu.find({
$where:function(){
return this.age>30;
}
}) 3.6 limit和skip:
db.集合.find().limit(num):只显示查询结果的前num条
db.集合.find().skip(num):越过前num条数据从下一条开始显示 可以联合使用:
db.stu.find({}).skip(5).limit(3)
// 越过前5条从第6条开始显示3条
db.stu.find({}).limit(3).skip(5)
//skip和limit挑换顺序执行效果是一样的 3.7 投影(指定字段显示查询结果):
db.集合.find({条件},{ 字段1:1,字段2:1,字段3:0 })
//条件后跟一个参数,0代表在查询结果中不显示 1代表显示 例如:只查看姓名和性别:
db.stu.find({},{name:1 , gender:1 })
// _id 是默认会显示出来的,如果要不显示_id 需要特殊指定
// 投影设为1后 除了_id 其他的参数都是默认显示的 不显示_id:
db.stu.find({},{_id:0,name:1}) 3.8 排序 sort() :
db.集合.find().sort({字段1:1,字段2:-1})
// 指定字段排序,1代表升序,-1代表降序 例如:根据年龄升序、性别降序排序
db.stu.find({}).sort({age:1,gender:-1}) 3.9 统计个数 count():
db.集合.find({条件}).count()
或 db.集合.count({条件}) 例如: 统计男生人数
db.stu.find({gender:1}).count()
或者db.stu.count({gender:1}) 例如: 统计年龄大于18的男生
db.stu.count({age:{&gt:18}},gender:1) 3.10 消除重复 distinct() :
db.集合.distinct("字段",{条件}) 例如: 查询年龄大于18的男生来自哪些省份
db.stu.distinct("hometown",{age:{&gt:18},gender:1})

mangodb的基本操作:增删改差的更多相关文章

  1. MongoDB的ObjectId和基本操作增删改查(3)

    ObjectId 基本操作增删改查 增: insert 介绍: mongodb存储的是文档,. 文档是json格式的对象. 语法: db.collectionName.insert(document) ...

  2. MongoDB --- 02. 基本操作,增删改查,数据类型,比较符,高级用法,pymongo

    一.基本操作 . mongod 启动服务端 2. mongo 启动客户端 3. show databses 查看本地磁盘的数据库 4. use 库名 切换到要使用的数据库 5. db 查看当前使用的数 ...

  3. IBatis增删改差的实现以及注意点

    此次进讲述对表操作的实现细节.废话不多说,代码见真章. <?xml version="1.0" encoding="utf-8" ?> <sq ...

  4. web sql 基本操作 - 增删改查

    不喜欢看md原文的 可以访问这个链接:http://note.youdao.com/noteshare?id=6a91e3dea7cdf5195bb0e851d9fcb5a5 # web sql 增删 ...

  5. Windows 10 64位操作系统 下安装、连接测试sqlite3 sql基本操作 增删改

    一.下载sqlite安装包 1:详细下载安装版本可见官网:https://www.sqlite.org/download.html 2:百度盘分享连接:https://pan.baidu.com/s/ ...

  6. MongoDB基本操作(增删改查)

    基本操作      基本的“增删查改“,在DOS环境下输入mongo命令打开shell,其实这个shell就是mongodb的客户端,同时也是一个js的编译器,默认连接的是“test”数据库.  

  7. mybatis06 增删改差 源码

    user.java package cn.itcast.mybatis.po; import java.util.Date; public class User { private int id; p ...

  8. android 35 ListView增删改差

    MainActivity package com.sxt.day05_11; import java.util.ArrayList; import java.util.List; import and ...

  9. datagrid的基本操作-增删改

    1 ---恢复内容开始--- <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> ...

随机推荐

  1. 关于在Editplus中设置内容提示比如syso的快捷输出的方法

    在Editplus中默认的内容提示是很少的,比如我们最常用的syso快捷输出就没有,那么怎么来设置呢? 首先打开工具-首选项: 然后打开文件类型及语法-在文件类型中打开Java,如图: 然后打开 我们 ...

  2. 百度和谷歌的逆地址解析及GPS、谷歌地图和百度地图坐标之间的转换(python版)

    #!/usr/bin/env python # coding:utf-8 # @author: KaiVen """ GPS坐标转换: WGS-84:是国际标准,GPS坐 ...

  3. [C#].Net Core下全局自定义身份过滤器使用AllowAnonymous属性

    假设一种情况:项目中需要做认证和权限控制,而且需要权限才能访问的控制器要远多于可以匿名访问的(类似AO系统那样,登陆了才能用). 那在每个控制器上加一个 [Authorize] 是能解决问题,反正正我 ...

  4. java大数(BigInteger)

    JAVA之BigInteger 用Java来处理高精度问题,相信对很多ACMer来说都是一件很happy的事,简单易懂.用Java刷了一些题,感觉Java还不错,在处理高精度和进制转换中,调用库函数的 ...

  5. Leetcode 15——3Sum

    Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all un ...

  6. 20162330 实验四 《Android程序设计》 实验报告

    2016-2017-2 实验报告目录: 1 2 3 4 5 20162330 实验四 <Android程序设计> 实验报告 课程名称:<程序设计与数据结构> 学生班级:1623 ...

  7. 2017-2018-1 20155306 mypwd的实现

    2017-2018-1 20155306 mypwd的实现 一.pwd的使用 功能: Linux中用 pwd 命令来查看"当前工作目录"的完整路径. 命令格式:pwd [选项] 命 ...

  8. Beta冲刺-用户测试报告

    一.项目概述 1.1项目名称 高校学生征信系统 1.2项目简介 此项目基于SSH框架,力图为学生提供征信服务和信用相关的借款和申请活动.其中以信用统计和管理为主,信用使用为辅,构建出一个集信用收集和使 ...

  9. maven添加oracle驱动

    由于oracle商业版权问题,maven是不可以直接下载jar包的,所以..   先将ojdbc14.jar放到用户目录,win7放到C:\Users\Administrator然后在cmd执行   ...

  10. Java课程设计报告——学生成绩管理系统

    一.需求分析 1.数据存储在数据库和文件中 2.分为"教师"模块和"学生"模块. 3.学生模块提供登陆功能,登陆成功后可查询数学.Java.体育成绩 (学生学号 ...