天天看點

MongDB篇,第一章:資料庫知識2MongDB    資料庫知識2

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

View Code

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

View Code

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

View Code

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

View Code

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

View Code

邏輯操作符:

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

View Code

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

View Code

數組查找

  檢視資料中含有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" ] }
>       

View Code

其他查找方法:

  $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      

View Code

和查詢結果相關的幾個函數:

  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
>       

View Code

(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 })
>       

View Code

  練習:

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歲的學生      

View Code

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

View Code

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

View Code

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

View Code

轉載于:https://www.cnblogs.com/weizitianming/p/9301585.html