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" }
>