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