MongDB篇,第一章:数据库知识2

时间:2022-09-12 20:41:39

MongDB    数据库知识2

非关系型数据库和关系型数据库的比较
1. 不是以关系模型构建数据结构,结构比较*
不保证数据的一致性
2. 非关系型数据库弥补了关系型数据库的一些不足,能 够在处理高并发,海量数据上体现优势
3. 非关系型数据库的个性化使其可以在节省空间,提高 效率方面发挥作用

Mongodb 文档型非关系型数据库

创建数据库 : use databaseName
删除数据库 : db.dropDatabase()

创建集合 : db.createCollection()
db.collectionName.insert()
删除集合 : db.collectionName.drop()
重命名集合 :db.collectionName.renameCollection()

查看数据库 : show dbs
查看集合 : show collections
show tables

插入文档 : insert() save()
==================================================

(1)修改集合名称:

db.collection_name.renameCollection('newname')

eg.    db.class1.renameCollection('class0')  #将class1改为class0

> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
std 0.000GB
stu 0.000GB
> use stu
switched to db stu
> show tables;
class1
class3
> show collections
class1
class3
> db.class1.renameCollection('class0')
{ "ok" : 1 }
> show collections
class0
class3
> db.class0
stu.class0
> db.class0.find()
{ "_id" : ObjectId("5b44c691a1e0b5db3cff6a6c"), "name" : "xiaoming", "age" : 20, "sex" : "m" }
{ "_id" : ObjectId("5b44c6d5a1e0b5db3cff6a6d"), "name" : "ttttt", "age" : 20, "sex" : "m" }
{ "_id" : ObjectId("5b44c7b7a1e0b5db3cff6a6e"), "name" : "ttttt", "age" : 20, "sex" : "m" }
{ "_id" : ObjectId("5b44c7b7a1e0b5db3cff6a6f"), "name" : "aaa", "age" : 18 }
{ "_id" : ObjectId("5b44c7b7a1e0b5db3cff6a70"), "name" : "bbb", "age" : 21 }
{ "_id" : ObjectId("5b44c9eaa1e0b5db3cff6a71"), "name" : "xxxxx", "age" : 11 }
{ "_id" : 1, "name" : "aiai", "age" : 19 }
> db.getCollection('class0').insert({name:'test_class0', age:21,sex:'w'})
WriteResult({ "nInserted" : 1 })
> db.class0.find()
{ "_id" : ObjectId("5b44c691a1e0b5db3cff6a6c"), "name" : "xiaoming", "age" : 20, "sex" : "m" }
{ "_id" : ObjectId("5b44c6d5a1e0b5db3cff6a6d"), "name" : "ttttt", "age" : 20, "sex" : "m" }
{ "_id" : ObjectId("5b44c7b7a1e0b5db3cff6a6e"), "name" : "ttttt", "age" : 20, "sex" : "m" }
{ "_id" : ObjectId("5b44c7b7a1e0b5db3cff6a6f"), "name" : "aaa", "age" : 18 }
{ "_id" : ObjectId("5b44c7b7a1e0b5db3cff6a70"), "name" : "bbb", "age" : 21 }
{ "_id" : ObjectId("5b44c9eaa1e0b5db3cff6a71"), "name" : "xxxxx", "age" : 11 }
{ "_id" : 1, "name" : "aiai", "age" : 19 }
{ "_id" : ObjectId("5b474f89a1e0b5db3cff6a72"), "name" : "test_class0", "age" : 21, "sex" : "w" }
>

(2)查找(字段)

select ....from tablename  where ....

db.collection_name.find()    #返回所有字段   ----->  select * from tablename

find(query,field)

功能: 查找所有符合帅选要求的文档;

参数:  query:  筛选条件            相当于where子句

field :  展示的域             0表示不展示该域,  1表示展示该域;

返回值:返回对应符合要求的文档;

field : 选择要展示的域;

1,以键值对的形式给每个域赋值0,1 表示是否要显示该域;

2,如果给域设置为0,则其他域自动为1, 如果给某个域设置为1, 则其他的自动设置为0,两者不能混用;

3,_id 比较特殊,默认为1,如果不想显示则设置为0. _id 为0 时,其他的是可以为1的;

4,如果不写该参数,则表示显示所有的域;

query: 查找

1,以键值的方式确定查找条件;

2,如果不写这个参数则表示查找所有文档;

eg。  db.class0.find({age:22},{_id:0})  =====》 select name,age,sex from class0 where age=22

> db.class0.find()
{ "_id" : ObjectId("5b44c691a1e0b5db3cff6a6c"), "name" : "xiaoming", "age" : 20, "sex" : "m" }
{ "_id" : ObjectId("5b44c6d5a1e0b5db3cff6a6d"), "name" : "ttttt", "age" : 20, "sex" : "m" }
{ "_id" : ObjectId("5b44c7b7a1e0b5db3cff6a6e"), "name" : "ttttt", "age" : 20, "sex" : "m" }
{ "_id" : ObjectId("5b44c7b7a1e0b5db3cff6a6f"), "name" : "aaa", "age" : 18 }
{ "_id" : ObjectId("5b44c7b7a1e0b5db3cff6a70"), "name" : "bbb", "age" : 21 }
{ "_id" : ObjectId("5b44c9eaa1e0b5db3cff6a71"), "name" : "xxxxx", "age" : 11 }
{ "_id" : 1, "name" : "aiai", "age" : 19 }
{ "_id" : ObjectId("5b474f89a1e0b5db3cff6a72"), "name" : "test_class0", "age" : 21, "sex" : "w" }
> db.class0.find({},{_id:0})
{ "name" : "xiaoming", "age" : 20, "sex" : "m" }
{ "name" : "ttttt", "age" : 20, "sex" : "m" }
{ "name" : "ttttt", "age" : 20, "sex" : "m" }
{ "name" : "aaa", "age" : 18 }
{ "name" : "bbb", "age" : 21 }
{ "name" : "xxxxx", "age" : 11 }
{ "name" : "aiai", "age" : 19 }
{ "name" : "test_class0", "age" : 21, "sex" : "w" }
> db.class0.find({},{_id:0,sex:0})
{ "name" : "xiaoming", "age" : 20 }
{ "name" : "ttttt", "age" : 20 }
{ "name" : "ttttt", "age" : 20 }
{ "name" : "aaa", "age" : 18 }
{ "name" : "bbb", "age" : 21 }
{ "name" : "xxxxx", "age" : 11 }
{ "name" : "aiai", "age" : 19 }
{ "name" : "test_class0", "age" : 21 }
>
> db.class0.find({},{age:1})
{ "_id" : ObjectId("5b44c691a1e0b5db3cff6a6c"), "age" : 20 }
{ "_id" : ObjectId("5b44c6d5a1e0b5db3cff6a6d"), "age" : 20 }
{ "_id" : ObjectId("5b44c7b7a1e0b5db3cff6a6e"), "age" : 20 }
{ "_id" : ObjectId("5b44c7b7a1e0b5db3cff6a6f"), "age" : 18 }
{ "_id" : ObjectId("5b44c7b7a1e0b5db3cff6a70"), "age" : 21 }
{ "_id" : ObjectId("5b44c9eaa1e0b5db3cff6a71"), "age" : 11 }
{ "_id" : 1, "age" : 19 }
{ "_id" : ObjectId("5b474f89a1e0b5db3cff6a72"), "age" : 21 }
> db.class0.find({},{name:1,age:1})
{ "_id" : ObjectId("5b44c691a1e0b5db3cff6a6c"), "name" : "xiaoming", "age" : 20 }
{ "_id" : ObjectId("5b44c6d5a1e0b5db3cff6a6d"), "name" : "ttttt", "age" : 20 }
{ "_id" : ObjectId("5b44c7b7a1e0b5db3cff6a6e"), "name" : "ttttt", "age" : 20 }
{ "_id" : ObjectId("5b44c7b7a1e0b5db3cff6a6f"), "name" : "aaa", "age" : 18 }
{ "_id" : ObjectId("5b44c7b7a1e0b5db3cff6a70"), "name" : "bbb", "age" : 21 }
{ "_id" : ObjectId("5b44c9eaa1e0b5db3cff6a71"), "name" : "xxxxx", "age" : 11 }
{ "_id" : 1, "name" : "aiai", "age" : 19 }
{ "_id" : ObjectId("5b474f89a1e0b5db3cff6a72"), "name" : "test_class0", "age" : 21 }
>
> db.class0.find({},{name:1,age:0})
Error: error: {
"ok" : 0,
"errmsg" : "Projection cannot have a mix of inclusion and exclusion.",
"code" : 2,
"codeName" : "BadValue"
}
> db.class0.find({},{name:1})
{ "_id" : ObjectId("5b44c691a1e0b5db3cff6a6c"), "name" : "xiaoming" }
{ "_id" : ObjectId("5b44c6d5a1e0b5db3cff6a6d"), "name" : "ttttt" }
{ "_id" : ObjectId("5b44c7b7a1e0b5db3cff6a6e"), "name" : "ttttt" }
{ "_id" : ObjectId("5b44c7b7a1e0b5db3cff6a6f"), "name" : "aaa" }
{ "_id" : ObjectId("5b44c7b7a1e0b5db3cff6a70"), "name" : "bbb" }
{ "_id" : ObjectId("5b44c9eaa1e0b5db3cff6a71"), "name" : "xxxxx" }
{ "_id" : 1, "name" : "aiai" }
{ "_id" : ObjectId("5b474f89a1e0b5db3cff6a72"), "name" : "test_class0" }
> db.class0.find({},{name:0})
{ "_id" : ObjectId("5b44c691a1e0b5db3cff6a6c"), "age" : 20, "sex" : "m" }
{ "_id" : ObjectId("5b44c6d5a1e0b5db3cff6a6d"), "age" : 20, "sex" : "m" }
{ "_id" : ObjectId("5b44c7b7a1e0b5db3cff6a6e"), "age" : 20, "sex" : "m" }
{ "_id" : ObjectId("5b44c7b7a1e0b5db3cff6a6f"), "age" : 18 }
{ "_id" : ObjectId("5b44c7b7a1e0b5db3cff6a70"), "age" : 21 }
{ "_id" : ObjectId("5b44c9eaa1e0b5db3cff6a71"), "age" : 11 }
{ "_id" : 1, "age" : 19 }
{ "_id" : ObjectId("5b474f89a1e0b5db3cff6a72"), "age" : 21, "sex" : "w" }
> db.class0.find({},{_id:0,name:0})
{ "age" : 20, "sex" : "m" }
{ "age" : 20, "sex" : "m" }
{ "age" : 20, "sex" : "m" }
{ "age" : 18 }
{ "age" : 21 }
{ "age" : 11 }
{ "age" : 19 }
{ "age" : 21, "sex" : "w" }
> db.class0.find({},{_id:0,name:1})
{ "name" : "xiaoming" }
{ "name" : "ttttt" }
{ "name" : "ttttt" }
{ "name" : "aaa" }
{ "name" : "bbb" }
{ "name" : "xxxxx" }
{ "name" : "aiai" }
{ "name" : "test_class0" }
> db.class0.find({age:22},{_id:0})
> db.class0.find({age:20},{_id:0})
{ "name" : "xiaoming", "age" : 20, "sex" : "m" }
{ "name" : "ttttt", "age" : 20, "sex" : "m" }
{ "name" : "ttttt", "age" : 20, "sex" : "m" }
>

db.collection_name.findOne()  #返回查找字段的第一条

功能:查找符合条件的第一条文档;

参数: 同find

返回值:返回查找到的文档;

> db.class0.find({age:20},{_id:0})
{ "name" : "xiaoming", "age" : 20, "sex" : "m" }
{ "name" : "ttttt", "age" : 20, "sex" : "m" }
{ "name" : "ttttt", "age" : 20, "sex" : "m" }
> db.class0.findOne()
{
"_id" : ObjectId("5b44c691a1e0b5db3cff6a6c"),
"name" : "xiaoming",
"age" : 20,
"sex" : "m"
}
> db.class0.findOne({age:20},{_id:0})
{ "name" : "xiaoming", "age" : 20, "sex" : "m" }
>

query 的更多用法:

比较操作符:

$eq         等于

> db.class0.find({age:{$eq:20}},{_id:0})   等价于> db.class0.find({age:20},{_id:0})

比较预算符也是用键值的方式,给比较运算符设置一个值,表示相应的关系;

$lt         小于

> db.class0.find({age:{$lt:20}},{_id:0})

在MongoDB中字符串也可以比较大小;

$lte      小于等于

> db.class0.find({age:{$lte:19}},{_id:0})

$gt        大于

> db.class0.find({age:{$gt:19}},{_id:0})

$gte       大于等于

> db.class0.find({age:{$gte:19}},{_id:0})

$ne     不等于

> db.class0.find({age:{$ne:20}},{_id:0})

如果某个文档没有age这个域也会显示不等于20

$in     包含

> db.class0.find({age:{$in:[19,21]}},{_id:0})

找出年龄为19,21的文档;

$nin  不包含

> db.class0.find({age:{$nin:[19,21]}},{_id:0})

> db.class0.find({age:{$eq:20}},{_id:0})
{ "name" : "xiaoming", "age" : 20, "sex" : "m" }
{ "name" : "ttttt", "age" : 20, "sex" : "m" }
{ "name" : "ttttt", "age" : 20, "sex" : "m" }
> db.class0.find({age:20},{_id:0})
{ "name" : "xiaoming", "age" : 20, "sex" : "m" }
{ "name" : "ttttt", "age" : 20, "sex" : "m" }
{ "name" : "ttttt", "age" : 20, "sex" : "m" }
> db.class0.find({age:{$lt:20}},{_id:0})
{ "name" : "aaa", "age" : 18 }
{ "name" : "xxxxx", "age" : 11 }
{ "name" : "aiai", "age" : 19 }
> db.class0.find({name:{$lt:'ttttt'}},{_id:0})
{ "name" : "aaa", "age" : 18 }
{ "name" : "bbb", "age" : 21 }
{ "name" : "aiai", "age" : 19 }
{ "name" : "test_class0", "age" : 21, "sex" : "w" }
> db.class0.find({age:{$lte:20}},{_id:0})
{ "name" : "xiaoming", "age" : 20, "sex" : "m" }
{ "name" : "ttttt", "age" : 20, "sex" : "m" }
{ "name" : "ttttt", "age" : 20, "sex" : "m" }
{ "name" : "aaa", "age" : 18 }
{ "name" : "xxxxx", "age" : 11 }
{ "name" : "aiai", "age" : 19 }
> db.class0.find({age:{$lte:19}},{_id:0})
{ "name" : "aaa", "age" : 18 }
{ "name" : "xxxxx", "age" : 11 }
{ "name" : "aiai", "age" : 19 }
> db.class0.find({age:{$gt:19}},{_id:0})
{ "name" : "xiaoming", "age" : 20, "sex" : "m" }
{ "name" : "ttttt", "age" : 20, "sex" : "m" }
{ "name" : "ttttt", "age" : 20, "sex" : "m" }
{ "name" : "bbb", "age" : 21 }
{ "name" : "test_class0", "age" : 21, "sex" : "w" }
> db.class0.find({age:{$gte:19}},{_id:0})
{ "name" : "xiaoming", "age" : 20, "sex" : "m" }
{ "name" : "ttttt", "age" : 20, "sex" : "m" }
{ "name" : "ttttt", "age" : 20, "sex" : "m" }
{ "name" : "bbb", "age" : 21 }
{ "name" : "aiai", "age" : 19 }
{ "name" : "test_class0", "age" : 21, "sex" : "w" }
> db.class0.find({age:{$ne:20}},{_id:0})
{ "name" : "aaa", "age" : 18 }
{ "name" : "bbb", "age" : 21 }
{ "name" : "xxxxx", "age" : 11 }
{ "name" : "aiai", "age" : 19 }
{ "name" : "test_class0", "age" : 21, "sex" : "w" }
> db.class0.find({age:{$in:[19,21]}},{_id:0})
{ "name" : "bbb", "age" : 21 }
{ "name" : "aiai", "age" : 19 }
{ "name" : "test_class0", "age" : 21, "sex" : "w" }
> db.class0.find({age:{$nin:[19,21]}},{_id:0})
{ "name" : "xiaoming", "age" : 20, "sex" : "m" }
{ "name" : "ttttt", "age" : 20, "sex" : "m" }
{ "name" : "ttttt", "age" : 20, "sex" : "m" }
{ "name" : "aaa", "age" : 18 }
{ "name" : "xxxxx", "age" : 11 }
>

逻辑操作符:

$and   逻辑与

*  默认在query中逗号分隔的多个条件即为逻辑与的关系;

> db.class0.find({$and:[{age:20},{age:20}]},{_id:0})  等价于> db.class0.find({age:20,sex:'m'},{_id:0})

> db.class0.find({age:{$gt:18,$lt:21}},{_id:0})

$or  逻辑或

> db.class0.find({$or:[{age:20},{sex:'w'}]},{_id:0})

> db.class0.find({$or:[{age:{$lt:20}},{age:{$gt:25}}]},{_id:0})  #小于20或者大于25

$not   逻辑非

> db.class0.find({age:{$not:{$eq:20}}},{_id:0})

$nor    既不也不(集合中的条件都不满足的文档)

> db.class0.find({age:{$eq:20}},{_id:0})
{ "name" : "xiaoming", "age" : 20, "sex" : "m" }
{ "name" : "ttttt", "age" : 20, "sex" : "m" }
{ "name" : "ttttt", "age" : 20, "sex" : "m" }
> db.class0.find({age:20},{_id:0})
{ "name" : "xiaoming", "age" : 20, "sex" : "m" }
{ "name" : "ttttt", "age" : 20, "sex" : "m" }
{ "name" : "ttttt", "age" : 20, "sex" : "m" }
> db.class0.find({age:{$lt:20}},{_id:0})
{ "name" : "aaa", "age" : 18 }
{ "name" : "xxxxx", "age" : 11 }
{ "name" : "aiai", "age" : 19 }
> db.class0.find({name:{$lt:'ttttt'}},{_id:0})
{ "name" : "aaa", "age" : 18 }
{ "name" : "bbb", "age" : 21 }
{ "name" : "aiai", "age" : 19 }
{ "name" : "test_class0", "age" : 21, "sex" : "w" }
> db.class0.find({age:{$lte:20}},{_id:0})
{ "name" : "xiaoming", "age" : 20, "sex" : "m" }
{ "name" : "ttttt", "age" : 20, "sex" : "m" }
{ "name" : "ttttt", "age" : 20, "sex" : "m" }
{ "name" : "aaa", "age" : 18 }
{ "name" : "xxxxx", "age" : 11 }
{ "name" : "aiai", "age" : 19 }
> db.class0.find({age:{$lte:19}},{_id:0})
{ "name" : "aaa", "age" : 18 }
{ "name" : "xxxxx", "age" : 11 }
{ "name" : "aiai", "age" : 19 }
> db.class0.find({age:{$gt:19}},{_id:0})
{ "name" : "xiaoming", "age" : 20, "sex" : "m" }
{ "name" : "ttttt", "age" : 20, "sex" : "m" }
{ "name" : "ttttt", "age" : 20, "sex" : "m" }
{ "name" : "bbb", "age" : 21 }
{ "name" : "test_class0", "age" : 21, "sex" : "w" }
> db.class0.find({age:{$gte:19}},{_id:0})
{ "name" : "xiaoming", "age" : 20, "sex" : "m" }
{ "name" : "ttttt", "age" : 20, "sex" : "m" }
{ "name" : "ttttt", "age" : 20, "sex" : "m" }
{ "name" : "bbb", "age" : 21 }
{ "name" : "aiai", "age" : 19 }
{ "name" : "test_class0", "age" : 21, "sex" : "w" }
> db.class0.find({age:{$ne:20}},{_id:0})
{ "name" : "aaa", "age" : 18 }
{ "name" : "bbb", "age" : 21 }
{ "name" : "xxxxx", "age" : 11 }
{ "name" : "aiai", "age" : 19 }
{ "name" : "test_class0", "age" : 21, "sex" : "w" }
> db.class0.find({age:{$in:[19,21]}},{_id:0})
{ "name" : "bbb", "age" : 21 }
{ "name" : "aiai", "age" : 19 }
{ "name" : "test_class0", "age" : 21, "sex" : "w" }
> db.class0.find({age:{$nin:[19,21]}},{_id:0})
{ "name" : "xiaoming", "age" : 20, "sex" : "m" }
{ "name" : "ttttt", "age" : 20, "sex" : "m" }
{ "name" : "ttttt", "age" : 20, "sex" : "m" }
{ "name" : "aaa", "age" : 18 }
{ "name" : "xxxxx", "age" : 11 }
> db.class0.find()
{ "_id" : ObjectId("5b44c691a1e0b5db3cff6a6c"), "name" : "xiaoming", "age" : 20, "sex" : "m" }
{ "_id" : ObjectId("5b44c6d5a1e0b5db3cff6a6d"), "name" : "ttttt", "age" : 20, "sex" : "m" }
{ "_id" : ObjectId("5b44c7b7a1e0b5db3cff6a6e"), "name" : "ttttt", "age" : 20, "sex" : "m" }
{ "_id" : ObjectId("5b44c7b7a1e0b5db3cff6a6f"), "name" : "aaa", "age" : 18 }
{ "_id" : ObjectId("5b44c7b7a1e0b5db3cff6a70"), "name" : "bbb", "age" : 21 }
{ "_id" : ObjectId("5b44c9eaa1e0b5db3cff6a71"), "name" : "xxxxx", "age" : 11 }
{ "_id" : 1, "name" : "aiai", "age" : 19 }
{ "_id" : ObjectId("5b474f89a1e0b5db3cff6a72"), "name" : "test_class0", "age" : 21, "sex" : "w" }
> db.class0.find({age:22,sex:'w'},{_id:0})
> db.class0.find({age:21,sex:'w'},{_id:0})
{ "name" : "test_class0", "age" : 21, "sex" : "w" }
> db.class0.find({age:20,sex:'w'},{_id:0})
> db.class0.find({age:20,sex:'m'},{_id:0})
{ "name" : "xiaoming", "age" : 20, "sex" : "m" }
{ "name" : "ttttt", "age" : 20, "sex" : "m" }
{ "name" : "ttttt", "age" : 20, "sex" : "m" }
> db.class0.find({$and:[{age:20},{age:20}]},{_id:0})
{ "name" : "xiaoming", "age" : 20, "sex" : "m" }
{ "name" : "ttttt", "age" : 20, "sex" : "m" }
{ "name" : "ttttt", "age" : 20, "sex" : "m" }
> db.class0.find(age:{$gt:18,$lt:21},{_id:0})
2018-07-12T22:40:58.974+0800 E QUERY [js] SyntaxError: missing ) after argument list @(shell):1:18
> db.class0.find(age:{$gt:18,$lt:21}},{_id:0})
2018-07-12T22:41:12.104+0800 E QUERY [js] SyntaxError: missing ) after argument list @(shell):1:18
> db.class0.find({age:{$gt:18,$lt:21}},{_id:0})
{ "name" : "xiaoming", "age" : 20, "sex" : "m" }
{ "name" : "ttttt", "age" : 20, "sex" : "m" }
{ "name" : "ttttt", "age" : 20, "sex" : "m" }
{ "name" : "aiai", "age" : 19 }
> db.class0.find({$or:{age:20},{sex:'w'}},{_id:0})
2018-07-12T22:46:11.156+0800 E QUERY [js] SyntaxError: invalid property id @(shell):1:29
> db.class0.find({$or:{age:20},{sex:'w'}},{_id:0})
2018-07-12T22:46:33.420+0800 E QUERY [js] SyntaxError: invalid property id @(shell):1:29
> db.class0.find({$or:[{age:20},{sex:'w'}]},{_id:0})
{ "name" : "xiaoming", "age" : 20, "sex" : "m" }
{ "name" : "ttttt", "age" : 20, "sex" : "m" }
{ "name" : "ttttt", "age" : 20, "sex" : "m" }
{ "name" : "test_class0", "age" : 21, "sex" : "w" }
> db.class0.find({$or:[{age:{$lt:20}},{age:{$gt:25}}]},{_id:0})
{ "name" : "aaa", "age" : 18 }
{ "name" : "xxxxx", "age" : 11 }
{ "name" : "aiai", "age" : 19 }
> db.class0.find({$or:[{age:{$lt:19}},{age:{$gt:20}}]},{_id:0})
{ "name" : "aaa", "age" : 18 }
{ "name" : "bbb", "age" : 21 }
{ "name" : "xxxxx", "age" : 11 }
{ "name" : "test_class0", "age" : 21, "sex" : "w" }
> db.class0.find({$or:[{age:{$lt:18}},{age:{$gt:20}}]},{_id:0})
{ "name" : "bbb", "age" : 21 }
{ "name" : "xxxxx", "age" : 11 }
{ "name" : "test_class0", "age" : 21, "sex" : "w" }
> db.class0.find({age:{$not:{$eq:20}}},{_id:0})
{ "name" : "aaa", "age" : 18 }
{ "name" : "bbb", "age" : 21 }
{ "name" : "xxxxx", "age" : 11 }
{ "name" : "aiai", "age" : 19 }
{ "name" : "test_class0", "age" : 21, "sex" : "w" }
>

$nor

> db.class0.find({$nor:[{age:20},{sex:'w'}]},{_id:0})
{ "name" : "aaa", "age" : 18 }
{ "name" : "bbb", "age" : 21 }
{ "name" : "xxxxx", "age" : 11 }
{ "name" : "aiai", "age" : 19 }
> db.class0.find({$nor:[{age:20},{name:'xxxxx'}]},{_id:0})
{ "name" : "aaa", "age" : 18 }
{ "name" : "bbb", "age" : 21 }
{ "name" : "aiai", "age" : 19 }
{ "name" : "test_class0", "age" : 21, "sex" : "w" }
>

数组查找

  查看数据中含有game的文档

> db.class1.find({hobby:'Game'},{_id:0})

  $all    查看数组中包含多项文档;

> db.class1.find({hobby:{$all:["pingpong", "Game"]}},{_id:0})

  $size  查找数组中项数为指定个数的文档;

> db.class1.find({hobby:{$size:2}},{_id:0})

  $slice  (第二个参数)显示数组当中的前几项

> db.class1.find({},{_id:0,hobby:{$slice:1}})

> db.class1.find({},{_id:0,hobby:{$slice:2}})

> db.class1.find({},{_id:0,hobby:{$slice:-1}})

> db.class1.find({},{_id:0})
{ "name" : "xiaohong", "age" : 12, "hobby" : [ "song", "draw" ] }
{ "name" : "lili", "age" : 15, "hobby" : [ "speek", "run" ] }
{ "name" : "xixi", "age" : 17, "hobby" : [ "football", "gongfu" ] }
{ "name" : "mimi", "age" : 11, "hobby" : [ "pingpong", "Game" ] }
> db.class1.find({hobby:'Game'},{_id:0})
{ "name" : "mimi", "age" : 11, "hobby" : [ "pingpong", "Game" ] }
> db.class1.find({},{_id:0})
{ "name" : "xiaohong", "age" : 12, "hobby" : [ "song", "draw" ] }
{ "name" : "lili", "age" : 15, "hobby" : [ "speek", "run" ] }
{ "name" : "xixi", "age" : 17, "hobby" : [ "football", "gongfu" ] }
{ "name" : "mimi", "age" : 11, "hobby" : [ "pingpong", "Game" ] }
> db.class1.find({hobby:{$all["pingpong", "Game"]}},{_id:0})
2018-07-14T19:11:40.013+0800 E QUERY [js] SyntaxError: missing : after property id @(shell):1:27
> db.class1.find({hobby:{$all:["pingpong", "Game"]}},{_id:0})
{ "name" : "mimi", "age" : 11, "hobby" : [ "pingpong", "Game" ] }
> db.class1.insert({name:'aiai',age:18,hobby:['pipi','qinqin','baobao']})
WriteResult({ "nInserted" : 1 })
> db.class1.find()
{ "_id" : ObjectId("5b49d7eea1e0b5db3cff6a73"), "name" : "xiaohong", "age" : 12, "hobby" : [ "song", "draw" ] }
{ "_id" : ObjectId("5b49d87ea1e0b5db3cff6a74"), "name" : "lili", "age" : 15, "hobby" : [ "speek", "run" ] }
{ "_id" : ObjectId("5b49d87ea1e0b5db3cff6a75"), "name" : "xixi", "age" : 17, "hobby" : [ "football", "gongfu" ] }
{ "_id" : ObjectId("5b49d8cfa1e0b5db3cff6a76"), "name" : "mimi", "age" : 11, "hobby" : [ "pingpong", "Game" ] }
{ "_id" : ObjectId("5b49db79a1e0b5db3cff6a77"), "name" : "aiai", "age" : 18, "hobby" : [ "pipi", "qinqin", "baobao" ] }
> db.class1.find({},{_id:0})
{ "name" : "xiaohong", "age" : 12, "hobby" : [ "song", "draw" ] }
{ "name" : "lili", "age" : 15, "hobby" : [ "speek", "run" ] }
{ "name" : "xixi", "age" : 17, "hobby" : [ "football", "gongfu" ] }
{ "name" : "mimi", "age" : 11, "hobby" : [ "pingpong", "Game" ] }
{ "name" : "aiai", "age" : 18, "hobby" : [ "pipi", "qinqin", "baobao" ] }
> db.class1.find({hobby:{$size:2}},{_id:0})
{ "name" : "xiaohong", "age" : 12, "hobby" : [ "song", "draw" ] }
{ "name" : "lili", "age" : 15, "hobby" : [ "speek", "run" ] }
{ "name" : "xixi", "age" : 17, "hobby" : [ "football", "gongfu" ] }
{ "name" : "mimi", "age" : 11, "hobby" : [ "pingpong", "Game" ] }
>
> db.class1.find({},{_id:0,hobby:{$slice:1}})
{ "name" : "xiaohong", "age" : 12, "hobby" : [ "song" ] }
{ "name" : "lili", "age" : 15, "hobby" : [ "speek" ] }
{ "name" : "xixi", "age" : 17, "hobby" : [ "football" ] }
{ "name" : "mimi", "age" : 11, "hobby" : [ "pingpong" ] }
{ "name" : "aiai", "age" : 18, "hobby" : [ "pipi" ] }
> db.class1.find({},{_id:0,hobby:{$slice:2}})
{ "name" : "xiaohong", "age" : 12, "hobby" : [ "song", "draw" ] }
{ "name" : "lili", "age" : 15, "hobby" : [ "speek", "run" ] }
{ "name" : "xixi", "age" : 17, "hobby" : [ "football", "gongfu" ] }
{ "name" : "mimi", "age" : 11, "hobby" : [ "pingpong", "Game" ] }
{ "name" : "aiai", "age" : 18, "hobby" : [ "pipi", "qinqin" ] }
> db.class1.find({},{_id:0,hobby:{$slice:-1}})
{ "name" : "xiaohong", "age" : 12, "hobby" : [ "draw" ] }
{ "name" : "lili", "age" : 15, "hobby" : [ "run" ] }
{ "name" : "xixi", "age" : 17, "hobby" : [ "gongfu" ] }
{ "name" : "mimi", "age" : 11, "hobby" : [ "Game" ] }
{ "name" : "aiai", "age" : 18, "hobby" : [ "baobao" ] }
>

其他查找方法:

  $exists   判断一个域是否存在

> db.class0.find({sex:{$exists:true}},{_id:0})   查找存在

> db.class0.find({sex:{$exists:false}},{_id:0})   查找不存在

  $mod     通过整除余数进行查找

> db.class0.find({age:{$mod:[3,0]}},{_id:0})

> db.class0.find({age:{$mod:[3,1]}},{_id:0})

> db.class0.find({age:{$mod:[3,2]}},{_id:0})  

  $type  查找值为指定数据类型的文档

> db.class0.find({age:{$type:1}},{_id:0})

> db.class0.find({name:{$type:2}},{_id:0})

> db.class0.find({},{_id:0})
{ "name" : "xiaoming", "age" : 20, "sex" : "m" }
{ "name" : "ttttt", "age" : 20, "sex" : "m" }
{ "name" : "ttttt", "age" : 20, "sex" : "m" }
{ "name" : "aaa", "age" : 18 }
{ "name" : "bbb", "age" : 21 }
{ "name" : "xxxxx", "age" : 11 }
{ "name" : "aiai", "age" : 19 }
{ "name" : "test_class0", "age" : 21, "sex" : "w" }
> db.class0.find({sex:{$exists:true}},{_id:0})
{ "name" : "xiaoming", "age" : 20, "sex" : "m" }
{ "name" : "ttttt", "age" : 20, "sex" : "m" }
{ "name" : "ttttt", "age" : 20, "sex" : "m" }
{ "name" : "test_class0", "age" : 21, "sex" : "w" }
> db.class0.find({sex:{$exists:false}},{_id:0})
{ "name" : "aaa", "age" : 18 }
{ "name" : "bbb", "age" : 21 }
{ "name" : "xxxxx", "age" : 11 }
{ "name" : "aiai", "age" : 19 }
> db.class0.find({age:{$mod:[3,0]}},{_id:0})
{ "name" : "aaa", "age" : 18 }
{ "name" : "bbb", "age" : 21 }
{ "name" : "test_class0", "age" : 21, "sex" : "w" }
> db.class0.find({age:{$mod:[3,1]}},{_id:0})
{ "name" : "aiai", "age" : 19 }
> db.class0.find({age:{$mod:[3,2]}},{_id:0})
{ "name" : "xiaoming", "age" : 20, "sex" : "m" }
{ "name" : "ttttt", "age" : 20, "sex" : "m" }
{ "name" : "ttttt", "age" : 20, "sex" : "m" }
{ "name" : "xxxxx", "age" : 11 }
> db.class0.find({age:{$type:1}},{_id:0})
{ "name" : "xiaoming", "age" : 20, "sex" : "m" }
{ "name" : "ttttt", "age" : 20, "sex" : "m" }
{ "name" : "ttttt", "age" : 20, "sex" : "m" }
{ "name" : "aaa", "age" : 18 }
{ "name" : "bbb", "age" : 21 }
{ "name" : "xxxxx", "age" : 11 }
{ "name" : "aiai", "age" : 19 }
{ "name" : "test_class0", "age" : 21, "sex" : "w" }
> db.class0.find({name:{$type:2}},{_id:0})
{ "name" : "xiaoming", "age" : 20, "sex" : "m" }
{ "name" : "ttttt", "age" : 20, "sex" : "m" }
{ "name" : "ttttt", "age" : 20, "sex" : "m" }
{ "name" : "aaa", "age" : 18 }
{ "name" : "bbb", "age" : 21 }
{ "name" : "xxxxx", "age" : 11 }
{ "name" : "aiai", "age" : 19 }
{ "name" : "test_class0", "age" : 21, "sex" : "w" }
> db.class0.find({name:{$type:1}},{_id:0})
> db.class1.find({hobby:{$type:2}},{_id:0})
{ "name" : "xiaohong", "age" : 12, "hobby" : [ "song", "draw" ] }
{ "name" : "lili", "age" : 15, "hobby" : [ "speek", "run" ] }
{ "name" : "xixi", "age" : 17, "hobby" : [ "football", "gongfu" ] }
{ "name" : "mimi", "age" : 11, "hobby" : [ "pingpong", "Game" ] }
{ "name" : "aiai", "age" : 18, "hobby" : [ "pipi", "qinqin", "baobao" ] }
> ^C
bye

和查询结果相关的几个函数:

  distinct()   功能:查看一个集合中某个域的值所覆盖的范围;

  pretty()  功能:将查询结果格式化显示;

  limit(n)  功能: 查询结果显示前n个文档;

> db.class0.find({},{_id:0}).limit(3)

  skip(n)  功能:跳过前n条文档进行显示;

> db.class0.find({},{_id:0}).skip(2)

  count()  功能: 对查询结果进行计数;

> db.class0.find({},{_id:0}).count()

> db.class0.find({age:20},{_id:0}).count()

sort())

功能:按照指定的字段进行排序;

参数 : 键值对, 某个域按照升序排序则值为1, 降序则值为-1

> db.class0.find({},{_id:0}).sort({age:1})    #升序排序

> db.class0.find({},{_id:0}).sort({age:-1})  # 降序排序

  

复合排序:当第一个排序项相同的时候,使用第二个排序

> db.class0.find({},{_id:0}).sort({age:1,name:-1})

> db.class0.find({},{_id:0}).sort({age:1,name:1})

> db.class0.find({},{_id:0}).sort({age:1,name:1}).count()

> use stu
switched to db stu
>
> show collections
class0
class1
class3
> db.class0.distinct('age')
[ 20, 18, 21, 11, 19 ]
> db.class0.distinct('name')
[ "xiaoming", "ttttt", "aaa", "bbb", "xxxxx", "aiai", "test_class0" ]
> db.class1.distinct(hobby)
2018-07-14T19:56:40.323+0800 E QUERY [js] ReferenceError: hobby is not defined :
@(shell):1:1
> db.class1.distinct('hobby')
[
"draw",
"song",
"run",
"speek",
"football",
"gongfu",
"Game",
"pingpong",
"baobao",
"pipi",
"qinqin"
]
> db.class0.find().pretty()
{
"_id" : ObjectId("5b44c691a1e0b5db3cff6a6c"),
"name" : "xiaoming",
"age" : 20,
"sex" : "m"
}
{
"_id" : ObjectId("5b44c6d5a1e0b5db3cff6a6d"),
"name" : "ttttt",
"age" : 20,
"sex" : "m"
}
{
"_id" : ObjectId("5b44c7b7a1e0b5db3cff6a6e"),
"name" : "ttttt",
"age" : 20,
"sex" : "m"
}
{ "_id" : ObjectId("5b44c7b7a1e0b5db3cff6a6f"), "name" : "aaa", "age" : 18 }
{ "_id" : ObjectId("5b44c7b7a1e0b5db3cff6a70"), "name" : "bbb", "age" : 21 }
{
"_id" : ObjectId("5b44c9eaa1e0b5db3cff6a71"),
"name" : "xxxxx",
"age" : 11
}
{ "_id" : 1, "name" : "aiai", "age" : 19 }
{
"_id" : ObjectId("5b474f89a1e0b5db3cff6a72"),
"name" : "test_class0",
"age" : 21,
"sex" : "w"
}
> db.class0.find().pretty().limit(3)
{
"_id" : ObjectId("5b44c691a1e0b5db3cff6a6c"),
"name" : "xiaoming",
"age" : 20,
"sex" : "m"
}
{
"_id" : ObjectId("5b44c6d5a1e0b5db3cff6a6d"),
"name" : "ttttt",
"age" : 20,
"sex" : "m"
}
{
"_id" : ObjectId("5b44c7b7a1e0b5db3cff6a6e"),
"name" : "ttttt",
"age" : 20,
"sex" : "m"
}
> db.class0.find({},{_id:0}).limit(3)
{ "name" : "xiaoming", "age" : 20, "sex" : "m" }
{ "name" : "ttttt", "age" : 20, "sex" : "m" }
{ "name" : "ttttt", "age" : 20, "sex" : "m" }
> db.class0.find({},{_id:0}).skip(2)
{ "name" : "ttttt", "age" : 20, "sex" : "m" }
{ "name" : "aaa", "age" : 18 }
{ "name" : "bbb", "age" : 21 }
{ "name" : "xxxxx", "age" : 11 }
{ "name" : "aiai", "age" : 19 }
{ "name" : "test_class0", "age" : 21, "sex" : "w" }
> db.class0.find({},{_id:0}).count()
8
>
> db.class0.find({age:20},{_id:0}).count()
3
> db.class0.find({},{_id:0}).sort([])
Error: error: {
"ok" : 0,
"errmsg" : "Failed to parse: sort: []. 'sort' field must be of BSON type object.",
"code" : 9,
"codeName" : "FailedToParse"
}
> db.class0.find({},{_id:0}).sort({})
{ "name" : "xiaoming", "age" : 20, "sex" : "m" }
{ "name" : "ttttt", "age" : 20, "sex" : "m" }
{ "name" : "ttttt", "age" : 20, "sex" : "m" }
{ "name" : "aaa", "age" : 18 }
{ "name" : "bbb", "age" : 21 }
{ "name" : "xxxxx", "age" : 11 }
{ "name" : "aiai", "age" : 19 }
{ "name" : "test_class0", "age" : 21, "sex" : "w" }
> db.class0.find({},{_id:0}).sort({age:1})
{ "name" : "xxxxx", "age" : 11 }
{ "name" : "aaa", "age" : 18 }
{ "name" : "aiai", "age" : 19 }
{ "name" : "xiaoming", "age" : 20, "sex" : "m" }
{ "name" : "ttttt", "age" : 20, "sex" : "m" }
{ "name" : "ttttt", "age" : 20, "sex" : "m" }
{ "name" : "bbb", "age" : 21 }
{ "name" : "test_class0", "age" : 21, "sex" : "w" }
> db.class0.find({},{_id:0}).sort({age:-1})
{ "name" : "bbb", "age" : 21 }
{ "name" : "test_class0", "age" : 21, "sex" : "w" }
{ "name" : "xiaoming", "age" : 20, "sex" : "m" }
{ "name" : "ttttt", "age" : 20, "sex" : "m" }
{ "name" : "ttttt", "age" : 20, "sex" : "m" }
{ "name" : "aiai", "age" : 19 }
{ "name" : "aaa", "age" : 18 }
{ "name" : "xxxxx", "age" : 11 }
> db.class0.find({},{_id:0}).sort({age:1,name:-1})
{ "name" : "xxxxx", "age" : 11 }
{ "name" : "aaa", "age" : 18 }
{ "name" : "aiai", "age" : 19 }
{ "name" : "xiaoming", "age" : 20, "sex" : "m" }
{ "name" : "ttttt", "age" : 20, "sex" : "m" }
{ "name" : "ttttt", "age" : 20, "sex" : "m" }
{ "name" : "test_class0", "age" : 21, "sex" : "w" }
{ "name" : "bbb", "age" : 21 }
> db.class0.find({},{_id:0}).sort({age:1,name:1})
{ "name" : "xxxxx", "age" : 11 }
{ "name" : "aaa", "age" : 18 }
{ "name" : "aiai", "age" : 19 }
{ "name" : "ttttt", "age" : 20, "sex" : "m" }
{ "name" : "ttttt", "age" : 20, "sex" : "m" }
{ "name" : "xiaoming", "age" : 20, "sex" : "m" }
{ "name" : "bbb", "age" : 21 }
{ "name" : "test_class0", "age" : 21, "sex" : "w" }
> db.class0.find({},{_id:0}).sort({age:1,name:1}).count()
8
>

(3) 删除文档

db.collection_name.remove(query,justOne)

功能:删除文档;

参数:query: 定位要删除的文档数据   类似sql

                    用法和查找相同

     justOne :  给bool值  ,默认false ,表示删除所有符合条件的数据文档;如果赋值为true, 则表示只删除第一条符合条件的文档;

> db.class0.remove({sex:{$exists:false}})  #删除不包含sex域的文档

> db.class0.remove({age:20},true)   #删除第一条

  删除集合中所有的文档

  db.collection_name.remove({})

> db.class0.remove({})
WriteResult({ "nRemoved" : 3 })

> db.class0.remove({sex:{$exists:false}})
WriteResult({ "nRemoved" : 4 })
> db.class0.find({},{_id:0}}
2018-07-14T20:23:10.214+0800 E QUERY [js] SyntaxError: missing ) after argument list @(shell):1:25
> db.class0.find({},{_id:0}})
2018-07-14T20:23:16.745+0800 E QUERY [js] SyntaxError: missing ) after argument list @(shell):1:25
> db.class0.find({},{_id:0})
{ "name" : "xiaoming", "age" : 20, "sex" : "m" }
{ "name" : "ttttt", "age" : 20, "sex" : "m" }
{ "name" : "ttttt", "age" : 20, "sex" : "m" }
{ "name" : "test_class0", "age" : 21, "sex" : "w" }
> db.class0.remove({age:20},true)
WriteResult({ "nRemoved" : 1 })
> db.class0.find({},{_id:0})
{ "name" : "ttttt", "age" : 20, "sex" : "m" }
{ "name" : "ttttt", "age" : 20, "sex" : "m" }
{ "name" : "test_class0", "age" : 21, "sex" : "w" }
> db.class0.remove({})
WriteResult({ "nRemoved" : 3 })
>

练习:

1. 创建数据库 名字 grade
2. 数据库中创建集合名字 class
3. 集合中插入若干文档,文档格式如下
{name:'zhang',age:10,sex:'m',hobby:['a','b']}
hobby 可以是 : draw sing dance basketball football pingpong computer
4. 查找练习
查看班级所有人信息 find()
查看班级中年龄为8岁的学生信息 find({age:8})
查看年龄大于10岁的学生信息 find({age:{$gt:10}})
查看年龄在8-11岁之间的学生信息 find({age:{$gt:8,$11}})
找到年龄为9岁且为男生的学生 find({age:9,sex:'m'})
找到年龄小于7岁或者大于11岁的学生 find({$or:[{age:{$lt7}},{age:{$gt:8}}]})
找到年龄是8岁或者11岁的学生 find({$or[{age:8},{age:11}]}) ; find({age:{$in[8,11]}})
找到有两项兴趣爱好的学生 find({hobby:{$size:2}})
找到兴趣爱好中有draw的学生 find({hobby:'draw'})
找到喜欢画画和跳舞的学生 find({hobby:{$all:['draw','dance']}})
统计兴趣有三项的学生人数 find({hobby:{$size:3}}).count()
找出本班年龄第二大的学生 find().sort({age:-1}).skip(1).limit(1)
查看学生的兴趣范围 db.class.distinct()
找到班级中年龄最大的三个学生
find().sort({age:-1}).limit(3)
删除所有年龄小于6岁的学生 remove({age:{$lt:4},sex:'m')
5. 删除所有年龄大于12或者小于6岁的学生

(4)更新文档

update   tablename set  ..... where......

db.collection_name.update(query, update, upsert, multi)

功能:更新一个文档数据

参数: query : 定位要更新的数据    , 相当于where   ,用法同查找

     update :  将数据更新成什么,  相当于set     需要配合修改器操作符来使用;

      upsert :  bool值:  默认为false  表示当定位的文档不存在 则无法修改。如果设置为true,表示如果定位不存在,则插入这条文档;

     multi  :   bool 值;  默认为false   如果query 匹配的文档有多条则只修改第一条。如果设置为true, 则修改所有匹配到的文档;

> db.class1.find({},{_id:0})
{ "name" : "xiaohong", "age" : 12, "hobby" : [ "song", "draw" ] }
{ "name" : "lili", "age" : 15, "hobby" : [ "speek", "run" ] }
{ "name" : "xixi", "age" : 17, "hobby" : [ "football", "gongfu" ] }
{ "name" : "mimi", "age" : 11, "hobby" : [ "pingpong", "Game" ] }
{ "name" : "aiai", "age" : 18, "hobby" : [ "pipi", "qinqin", "baobao" ] }
> db.class1.update({name:'mimi'},{$set:{age:19}},false)
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.class1.find({},{_id:0})
{ "name" : "xiaohong", "age" : 12, "hobby" : [ "song", "draw" ] }
{ "name" : "lili", "age" : 15, "hobby" : [ "speek", "run" ] }
{ "name" : "xixi", "age" : 17, "hobby" : [ "football", "gongfu" ] }
{ "name" : "mimi", "age" : 19, "hobby" : [ "pingpong", "Game" ] }
{ "name" : "aiai", "age" : 18, "hobby" : [ "pipi", "qinqin", "baobao" ] }
> db.class1.update({name:'timi'},{$set:{age:16}},true)
WriteResult({
"nMatched" : 0,
"nUpserted" : 1,
"nModified" : 0,
"_id" : ObjectId("5b4b2e13c24e7066f995d162")
})
> db.class1.find({},{_id:0})
{ "name" : "xiaohong", "age" : 12, "hobby" : [ "song", "draw" ] }
{ "name" : "lili", "age" : 15, "hobby" : [ "speek", "run" ] }
{ "name" : "xixi", "age" : 17, "hobby" : [ "football", "gongfu" ] }
{ "name" : "mimi", "age" : 19, "hobby" : [ "pingpong", "Game" ] }
{ "name" : "aiai", "age" : 18, "hobby" : [ "pipi", "qinqin", "baobao" ] }
{ "name" : "timi", "age" : 16 }
> db.class1.update({name:'timi'},{$set:{age:20}},true)
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.class1.find({},{_id:0})
{ "name" : "xiaohong", "age" : 12, "hobby" : [ "song", "draw" ] }
{ "name" : "lili", "age" : 15, "hobby" : [ "speek", "run" ] }
{ "name" : "xixi", "age" : 17, "hobby" : [ "football", "gongfu" ] }
{ "name" : "mimi", "age" : 19, "hobby" : [ "pingpong", "Game" ] }
{ "name" : "aiai", "age" : 18, "hobby" : [ "pipi", "qinqin", "baobao" ] }
{ "name" : "timi", "age" : 20 }
> db.class1.update({name:'xixi'},{$set:{age:19}},true)
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.class1.find({},{_id:0})
{ "name" : "xiaohong", "age" : 12, "hobby" : [ "song", "draw" ] }
{ "name" : "lili", "age" : 15, "hobby" : [ "speek", "run" ] }
{ "name" : "xixi", "age" : 19, "hobby" : [ "football", "gongfu" ] }
{ "name" : "mimi", "age" : 19, "hobby" : [ "pingpong", "Game" ] }
{ "name" : "aiai", "age" : 18, "hobby" : [ "pipi", "qinqin", "baobao" ] }
{ "name" : "timi", "age" : 20 }
> db.class1.update({age:19},{$set:{age:22}},true,false)
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.class1.find({},{_id:0})
{ "name" : "xiaohong", "age" : 12, "hobby" : [ "song", "draw" ] }
{ "name" : "lili", "age" : 15, "hobby" : [ "speek", "run" ] }
{ "name" : "xixi", "age" : 22, "hobby" : [ "football", "gongfu" ] }
{ "name" : "mimi", "age" : 19, "hobby" : [ "pingpong", "Game" ] }
{ "name" : "aiai", "age" : 18, "hobby" : [ "pipi", "qinqin", "baobao" ] }
{ "name" : "timi", "age" : 20 }
> db.class1.update({name:'xixi'},{$set:{age:19}},true)
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.class1.find({},{_id:0})
{ "name" : "xiaohong", "age" : 12, "hobby" : [ "song", "draw" ] }
{ "name" : "lili", "age" : 15, "hobby" : [ "speek", "run" ] }
{ "name" : "xixi", "age" : 19, "hobby" : [ "football", "gongfu" ] }
{ "name" : "mimi", "age" : 19, "hobby" : [ "pingpong", "Game" ] }
{ "name" : "aiai", "age" : 18, "hobby" : [ "pipi", "qinqin", "baobao" ] }
{ "name" : "timi", "age" : 20 }
> db.class1.update({age:19},{$set:{age:22}},true,true)
WriteResult({ "nMatched" : 2, "nUpserted" : 0, "nModified" : 2 })
> db.class1.find({},{_id:0})
{ "name" : "xiaohong", "age" : 12, "hobby" : [ "song", "draw" ] }
{ "name" : "lili", "age" : 15, "hobby" : [ "speek", "run" ] }
{ "name" : "xixi", "age" : 22, "hobby" : [ "football", "gongfu" ] }
{ "name" : "mimi", "age" : 22, "hobby" : [ "pingpong", "Game" ] }
{ "name" : "aiai", "age" : 18, "hobby" : [ "pipi", "qinqin", "baobao" ] }
{ "name" : "timi", "age" : 20 }
>

update

修改器: 将数据修改成什么;

 $set     修改一个值;同时:如果域不存在就增加域;

> db.class1.find({},{_id:0})
{ "name" : "xiaohong", "age" : 12, "hobby" : [ "song", "draw" ] }
{ "name" : "lili", "age" : 15, "hobby" : [ "speek", "run" ] }
{ "name" : "xixi", "age" : 22, "hobby" : [ "football", "gongfu" ] }
{ "name" : "mimi", "age" : 22, "hobby" : [ "pingpong", "Game" ] }
{ "name" : "aiai", "age" : 18, "hobby" : [ "pipi", "qinqin", "baobao" ] }
{ "name" : "timi", "age" : 20 }
>
> db.class1.update({name:'timi'},{$set:{age:21, sex:'m'}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.class1.find({},{_id:0})
{ "name" : "xiaohong", "age" : 12, "hobby" : [ "song", "draw" ] }
{ "name" : "lili", "age" : 15, "hobby" : [ "speek", "run" ] }
{ "name" : "xixi", "age" : 22, "hobby" : [ "football", "gongfu" ] }
{ "name" : "mimi", "age" : 22, "hobby" : [ "pingpong", "Game" ] }
{ "name" : "aiai", "age" : 18, "hobby" : [ "pipi", "qinqin", "baobao" ] }
{ "name" : "timi", "age" : 21, "sex" : "m" }
>

$unset     删除一个域

$rename  修改一个域名称; 如果都修改一个域名称则第4个参数为true;

> db.class1.find({},{_id:0})
{ "name" : "xiaohong", "age" : 12, "hobby" : [ "song", "draw" ] }
{ "name" : "lili", "age" : 15, "hobby" : [ "speek", "run" ] }
{ "name" : "xixi", "age" : 22, "hobby" : [ "football", "gongfu" ] }
{ "name" : "mimi", "age" : 22, "hobby" : [ "pingpong", "Game" ] }
{ "name" : "aiai", "age" : 18, "hobby" : [ "pipi", "qinqin", "baobao" ] }
{ "name" : "timi", "age" : 21, "sex" : "m" }
> db.class1.update({name:'timi'},{$unset:{sex:1}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.class1.find({},{_id:0})
{ "name" : "xiaohong", "age" : 12, "hobby" : [ "song", "draw" ] }
{ "name" : "lili", "age" : 15, "hobby" : [ "speek", "run" ] }
{ "name" : "xixi", "age" : 22, "hobby" : [ "football", "gongfu" ] }
{ "name" : "mimi", "age" : 22, "hobby" : [ "pingpong", "Game" ] }
{ "name" : "aiai", "age" : 18, "hobby" : [ "pipi", "qinqin", "baobao" ] }
{ "name" : "timi", "age" : 21 } > db.class1.find({},{_id:0})
{ "name" : "xiaohong", "age" : 12, "hobby" : [ "song", "draw" ] }
{ "name" : "lili", "age" : 15, "hobby" : [ "speek", "run" ] }
{ "name" : "xixi", "age" : 22, "hobby" : [ "football", "gongfu" ] }
{ "name" : "mimi", "age" : 22, "hobby" : [ "pingpong", "Game" ] }
{ "name" : "aiai", "age" : 18, "hobby" : [ "pipi", "qinqin", "baobao" ] }
{ "name" : "timi", "age" : 21, "sex" : "m" }
> db.class1.update({name:'timi'},{$rename:{sex:'gender'}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.class1.find({},{_id:0})
{ "name" : "xiaohong", "age" : 12, "hobby" : [ "song", "draw" ] }
{ "name" : "lili", "age" : 15, "hobby" : [ "speek", "run" ] }
{ "name" : "xixi", "age" : 22, "hobby" : [ "football", "gongfu" ] }
{ "name" : "mimi", "age" : 22, "hobby" : [ "pingpong", "Game" ] }
{ "name" : "aiai", "age" : 18, "hobby" : [ "pipi", "qinqin", "baobao" ] }
{ "name" : "timi", "age" : 21, "gender" : "m" }
>