数据库操作:

//查看有哪些数据库

> show dbs

local  0.078GB

mydb   0.078GB

//use操作将切换到一个数据库 如果数据库存在将直接切换 如果不存在 那么会在切换之后,第一次执行新增修改操作的时候去创建这个数据库

> use newdb

switched to db newdb

//此时还没有创建

> show dbs

local  0.078GB

mydb   0.078GB

> db.persion.insert({age:10})

WriteResult({ "nInserted" : 1 })

//数据库已经创建

> show dbs

local  0.078GB

mydb   0.078GB

newdb  0.078GB

//删除数据库

> db.dropDatabase()

{ "dropped" : "newdb", "ok" : 1 }

> show dbs

local  0.078GB

mydb   0.078GB

集合操作:

> use mydb

switched to db mydb

//查看当前数据库的所有集合 因为是新数据库所以为空

> show tables

//插入一条数据 这里会自动插入一个集合person

> db.person.insert({name:'zjf',age:30})

WriteResult({ "nInserted" : 1 })

//查看所有集合 已经有了person (system.indexes是系统产生的)

> show tables

person

system.indexes

//删除集合

> db.person.drop()

true

> show tables

system.indexes

文档插入

//使用db.collection.insert()语法

> db.person.insert({name:'zjf',age:30})

WriteResult({ "nInserted" : 1 })

> db.person.find()

{ "_id" : ObjectId("592ffd872108e8e79ea902b0"), "name" : "zjf", "age" : 30 }

文档更新

update() 方法

update() 方法用于更新已存在的文档。语法格式如下:

db.collection.update(
   <query>,
   <update>,
   {
     upsert: <boolean>,
     multi: <boolean>,
     writeConcern: <document>
   }
)

参数说明:

  • query : update的查询条件,类似sql update查询内where后面的。
  • update : update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的
  • upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
  • multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
  • writeConcern :可选,抛出异常的级别。

上面udpate中的命令可以有:

$set

用来指定一个键并更新键值,若键不存在并创建。

{ $set : { field : value } }

$unset

用来删除一个键。

{ $unset : { field : 1} }

$inc

$inc可以对文档的某个值为数字型(只能为满足要求的数字)的键进行增减的操作。

{ $inc : { field : value } }

$push

用法:

{ $push : { field : value } }

把value追加到field里面去,field一定要是数组类型才行,如果field不存在,会新增一个数组类型加进去。

$pushAll

同$push,只是一次可以追加多个值到一个数组字段内。

{ $pushAll : { field : value_array } }

$pull

从数组field内删除一个等于value值。

{ $pull : { field : _value } }

$addToSet

增加一个值到数组内,而且只有当这个值不在数组内才增加。

$pop

删除数组的第一个或最后一个元素

{ $pop : { field : 1 } }

$rename

修改字段名称

{ $rename : { old_field_name : new_field_name } }

$bit

位操作,integer类型

{$bit : { field : {and : 5}}}

$each

$ each修饰符可用于$ addToSet运算符和$ push运算符。用于执行批量操作。

db.students.update(
{ name: "joe" },
{ $push: { scores: { $each: [ 90, 92, 85 ] } } }
)
$ slice
$ slice修改器在$ push操作期间限制数组元素的数量。
假如有一个这样的结构:
{ "_id" : 1, "scores" : [ 40, 50, 60 ] }
执行如下语句:
db.students.update(
{ _id: 1 },
{
$push: {
scores: {
$each: [ 80, 78, 86 ],
$slice: -5
}
}
}
)
那么结果是,执行完push之后,只留下后5条:
{ "_id" : 1, "scores" : [  50,  60,  80,  78,  86 ] }
 

> db.person.insert({name:'xhj',age:30})

WriteResult({ "nInserted" : 1 })

> db.person.insert({name:'zzj',age:30})

WriteResult({ "nInserted" : 1 })

> db.person.find()

{ "_id" : ObjectId("592ffd872108e8e79ea902b0"), "name" : "zjf", "age" : 30 }

{ "_id" : ObjectId("592ffe972108e8e79ea902b1"), "name" : "xhj", "age" : 30 }

{ "_id" : ObjectId("592ffe972108e8e79ea902b2"), "name" : "zzj", "age" : 30 }

//更新年龄30的为31(尼玛又过了一年)

> db.person.update({age:30},{$set:{age:31}})//这里注意 如果没有$set,那么db.person.update({age:30},{age:31}),表示把所有满足age=30的文档替换为{age:31}。而不是只更改age字段。是整个文档被替换了。

WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

//因为默认的参数multi 为false 所以只更新了一条

> db.person.find()

{ "_id" : ObjectId("592ffd872108e8e79ea902b0"), "name" : "zjf", "age" : 31 }

{ "_id" : ObjectId("592ffe972108e8e79ea902b1"), "name" : "xhj", "age" : 30 }

{ "_id" : ObjectId("592ffe972108e8e79ea902b2"), "name" : "zzj", "age" : 30 }

//加上multi:true  这个就类似于关系型数据库的update

> db.person.update({age:30},{$set:{age:31}},{multi:true})

WriteResult({ "nMatched" : 2, "nUpserted" : 0, "nModified" : 2 })

> db.person.find()

{ "_id" : ObjectId("592ffd872108e8e79ea902b0"), "name" : "zjf", "age" : 31 }

{ "_id" : ObjectId("592ffe972108e8e79ea902b1"), "name" : "xhj", "age" : 31 }

{ "_id" : ObjectId("592fff812108e8e79ea902b2"), "name" : "zzj", "age" : 31 }

//根据单个记录的save来更新 这个时候要有_id作为主键 对单条数据进行更新的时候加了单独的save方法 而不是使用update({ "_id" :ObjectId("592ffd872108e8e79ea902b0")})这种方式。是把单条数据作为一个对象来看待了。

> db.person.save({ "_id" : ObjectId("592ffd872108e8e79ea902b0"), "name" : "zjf", "age" : 30 })

WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

> db.person.find()

{ "_id" : ObjectId("592ffd872108e8e79ea902b0"), "name" : "zjf", "age" : 30 }

{ "_id" : ObjectId("592ffe972108e8e79ea902b1"), "name" : "xhj", "age" : 31 }

{ "_id" : ObjectId("592fff812108e8e79ea902b2"), "name" : "zzj", "age" : 31 }

文档删除

remove() 方法的基本语法格式如下所示:

db.collection.remove(

<query>,

<justOne>

)

如果你的 MongoDB 是 2.6 版本以后的,语法格式如下:

db.collection.remove(

<query>,

{

justOne: <boolean>,

writeConcern: <document>

}

)

参数说明:

  • query :(可选)删除的文档的条件。
  • justOne : (可选)如果设为 true 或 1,则只删除一个文档。
  • writeConcern :(可选)抛出异常的级别。

> db.person.find()

{ "_id" : ObjectId("592ffd872108e8e79ea902b0"), "name" : "zjf", "age" : 30 }

{ "_id" : ObjectId("592ffe972108e8e79ea902b1"), "name" : "xhj", "age" : 31 }

{ "_id" : ObjectId("592fff812108e8e79ea902b2"), "name" : "zzj", "age" : 31 }

> db.person.remove({age:31})

WriteResult({ "nRemoved" : 2 })

> db.person.find()

{ "_id" : ObjectId("592ffd872108e8e79ea902b0"), "name" : "zjf", "age" : 30 }

文档查询

MongoDB 查询数据的语法格式如下:

db.collection.find(query, projection)

  • query :可选,使用查询操作符指定查询条件
  • projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)。

如果你需要以易读的方式来读取数据,可以使用 pretty() 方法,语法格式如下:

>db.col.find().pretty()

> db.person.find({name:'zjf'})

{ "_id" : ObjectId("592ffd872108e8e79ea902b0"), "name" : "zjf", "age" : 30 }

更新嵌入文档

db.users.update(
{ "favorites.artist": "Pisanello" },
{
$set: { "favorites.food": "pizza", type: 0}
}
)

Mongodb的基本操作-数据库 集合 文档的增删改查的更多相关文章

  1. mongodb的学习笔记一(集合和文档的增删改查)

    1数据库的增删改查 一.增加一个数据库: use blog-----切换到指定的数据库,如果数据库不存在,则自动创建该数据库(新建的数据库,如果没有存储对应的集合,是不会显示出来的) 二.删除一个数据 ...

  2. Elasticsearch之文档的增删改查以及ik分词器

    文档的增删改查 增加文档 使用elasticsearch-head查看 修改文档 使用elasticsearch-head查看 删除文档 使用elasticsearch-head查看 查看文档的三种方 ...

  3. 分布式搜索elasticsearch 索引文档的增删改查 入门

    1.RESTful接口使用方法 为了方便直观我们使用Head插件提供的接口进行演示,实际上内部调用的RESTful接口. RESTful接口URL的格式: http://localhost:9200/ ...

  4. head插件对elasticsearch 索引文档的增删改查

    1.RESTful接口使用方法 为了方便直观我们使用Head插件提供的接口进行演示,实际上内部调用的RESTful接口.  RESTful接口URL的格式: http://localhost:9200 ...

  5. Elasticsearch 索引文档的增删改查

    利用Elasticsearch-head可以在界面上(http://127.0.0.1:9100/)对索引进行增删改查 1.RESTful接口使用方法 为了方便直观我们使用Head插件提供的接口进行演 ...

  6. Java对XML文档的增删改查

    JAVA增删改查XML文件   最近总是需要进行xml的相关操作. 不免的要进行xml的读取修改等,于是上网搜索,加上自己的小改动,整合了下xml的常用操作. 读取XML配置文件 首先我们需要通过Do ...

  7. mongodb对数组元素及内嵌文档进行增删改查操作(转)

    from:https://my.oschina.net/132722/blog/168274 比如我有一个user类,他包含一个标签属性,这个标签是一个数组,数组里面的元素是内嵌文档,格式如下: &l ...

  8. MongoDB对数组元素及内嵌文档进行增删改查操作

    比如我有一个user类,他包含一个标签属性,这个标签是一个数组,数组里面的元素是内嵌文档,格式如下: {    "_id" : "195861",    &qu ...

  9. elasticsearch java和_head插件对索引文档的增删改查

    利用head插件: 1,创建索引并添加一条数据(yananindex:索引名称,yanantype:索引类型,1:索引id) 2.修改索引数据(索引id1不变,_version是对该索引数据执行了几次 ...

随机推荐

  1. 常见IE6兼容问题总结

    1.<!DOCTYPE HTML>文档类型的声明. 产生条件:IE6浏览器,当我们没有书写这个文档声明的时候,会触发IE6浏览器的怪异解析现象: 解决办法:书写文档声明. 2.不同浏览器当 ...

  2. Kinect数据

    原文链接 Kinect V1 和 V2 比较 Kinect V1 和 V2 的外观比较 Kinect V1 和 V2 的参数比较 Kinect V1 和 V2 随距离增加的误差分布 Kinect V1 ...

  3. Oracle 编写自定义函数

    CREATE OR REPLACE function testAdd(js1 in number, js2 in number) return number is v_hj number; v_h ; ...

  4. docker数据卷学习-利用数据卷实现mysql的快速恢复和迁移

    docker数据卷学习 一 新建带有数据卷的容器 1.从docker hub下载centos7镜像 # docker pull centos 2. 创建container # docker run - ...

  5. codeforces 842C Ilya And The Tree (01背包+dfs)

    (点击此处查看原题) 题目分析 题意:在一个树中,有n个结点,记为 1~n ,其中根结点编号为1,每个结点都有一个值val[i],问从根结点到各个结点的路径中所有结点的值的gcd(最大公约数)最大是多 ...

  6. Django创建数据库常用字段及参数

    Django创建数据库常用字段及参数 常用字段 1.models.AutoField 自增列= int(11) 如果没有的话,默认会生成一个名称为 id 的列,如果要显示的自定义一个自增列,必须将给列 ...

  7. Django重写用户模型报错has no attribute 'USERNAME_FIELD'

    目录 Django重写用户模型报错has no attribute 'USERNAME_FIELD' 在重写用户模型时报错:AttributeError: type object 'UserProfi ...

  8. 如何让 node 运行 es6 模块文件,及其原理

    如何让 node 运行 es6 模块文件,及其原理 最新版的 node 支持最新版 ECMAScript 几乎所有特性,但有一个特性却一直到现在都还没有支持,那就是从 ES2015 开始定义的模块化机 ...

  9. python网络爬虫(6)爬取数据静态

    爬取静态数据并存储json import requests import chardet from bs4 import BeautifulSoup import json user_agent='M ...

  10. 数据绑定-POJO对象绑定参数

    测试: 效果: