mongodb的增删改查
插入文档:
mongodb的数据以bson的格式存储,其可以看成一个文档,
db.getCollection('test').insert({
"name" : "bingo",
"age" : NumberLong(19),
"major" : "computer",
"address" : "上海"
})
另外db.getCollection('test').save()也可以存储,如果没有指定_id则inser和save是一样的,如果指定了_id则save执行的是更新操作;
删除文档:
db.collection.remove(<query>)
例如
db.collection.remove(name:"bingo")
现在官方推荐了两种新的删除方法
db.inventory.deleteMany({ status : "A" })
db.inventory.deleteOne( { status: "D" } )
分别是删除多个和删除一个;
更改文档
基本语法db.collection.update()
一个例子:
db.getCollection('test').update({name:'张三'},{$set:{age:NumberLong('12')}})此语句翻译成sql是
update test set age = 12 where name = '张三'
注意,mongodb的这条语句只会更新查询到的第一条记录,如果想更新多条记录则添加参数
db.getCollection('test').update({name:'张三'},{$set:{age:NumberLong('12')}},{multi:true});
另外db.getCollection('test').update({name:'张三'},{$set:{age:NumberLong('12')}},{upsert :true});
表示如果不存在要更新的记录,则添加一条
有一种写法
db.getCollection('test').update({name:'张三'},{$set:{age:NumberLong('18'),address:"纽约"}},true,true)
表示如果不存在则添加一条记录,如果存在多条则更新全部;
查询操作:
基础查询:
db.collection.find(query, projection)
参数说明
query:查询条件,如果没有则查询全部,
projection:返回值映射;
db.getCollection('test').find({})
db.getCollection('test').find({name:"张三"})
与where条件对比
操作 格式 范例 RDBMS中的类似语句
等于 {<key>:<value>} db.col.find({"name":"张三"}).pretty() where name= '张三'
小于 {<key>:{$lt:<value>}} db.col.find({"age":{$lt:50}}).pretty() where age < 50
小于或等于 {<key>:{$lte:<value>}} db.col.find({"age":{$lte:50}}).pretty() where age <= 50
大于 {<key>:{$gt:<value>}} db.col.find({"age":{$gt:50}}).pretty() where age > 50
大于或等于 {<key>:{$gte:<value>}} db.col.find({"age":{$gte:50}}).pretty() where age >= 50
不等于 {<key>:{$ne:<value>}} db.col.find({"age":{$ne:50}}).pretty() where age != 50
等于 {<key>:{$eq:<value>}} db.col.find({"age":{$eq:50}}).pretty() where age == 50
mongodb的and 条件
>db.col.find({key1:value1, key2:value2}).pretty()
pretty()表示格式化查询结果,
mongodb的and和or
db.col.find({"age": {$gt:50}, $or: [{"name": "张三"},{"address": "上海"}]}).pretty()
projection的格式
db.collection.find(query, {name: 1, address: 1}) // inclusion模式 指定返回的键,不返回其他键
db.collection.find(query, {name: 0, address: 0}) // exclusion模式 指定不返回的键,返回其他键
只能全是0或者全是1 , 不能一个0一个1 的情况
若不想指定query,但需要指定projection则使用querydb.collection.find({}, {title: 1})
db.getCollection('test').find().limit(1).skip(1)
查询指定数量的数据
排序:
db.COLLECTION_NAME.find().sort({KEY:1})注意数据类型不同的数据之间是不能比较的,意思是说如果age字段的值有string和int64则他们之间是不能排序的;
db.getCollection("test").find({
name:/张/
})
相当于 like "%张%"
db.getCollection("test").find({
name:/^张/
})
插入文档:
mongodb的数据以bson的格式存储,其可以看成一个文档,
db.getCollection('test').insert({
"name" : "bingo",
"age" : NumberLong(19),
"major" : "computer",
"address" : "上海"
})
另外db.getCollection('test').save()也可以存储,如果没有指定_id则inser和save是一样的,如果指定了_id则save执行的是更新操作;
删除文档:
db.collection.remove(<query>)
例如
db.collection.remove(name:"bingo")
现在官方推荐了两种新的删除方法
db.inventory.deleteMany({ status : "A" })
db.inventory.deleteOne( { status: "D" } )
分别是删除多个和删除一个;
更改文档
基本语法db.collection.update()
一个例子:
db.getCollection('test').update({name:'张三'},{$set:{age:NumberLong('12')}})此语句翻译成sql是
update test set age = 12 where name = '张三'
注意,mongodb的这条语句只会更新查询到的第一条记录,如果想更新多条记录则添加参数
db.getCollection('test').update({name:'张三'},{$set:{age:NumberLong('12')}},{multi:true});
另外db.getCollection('test').update({name:'张三'},{$set:{age:NumberLong('12')}},{upsert :true});
表示如果不存在要更新的记录,则添加一条
有一种写法
db.getCollection('test').update({name:'张三'},{$set:{age:NumberLong('18'),address:"纽约"}},true,true)
表示如果不存在则添加一条记录,如果存在多条则更新全部;
查询操作:
基础查询:
db.collection.find(query, projection)
参数说明
query:查询条件,如果没有则查询全部,
projection:返回值映射;
db.getCollection('test').find({})
db.getCollection('test').find({name:"张三"})
与where条件对比
操作 格式 范例 RDBMS中的类似语句
等于 {<key>:<value>} db.col.find({"name":"张三"}).pretty() where name= '张三'
小于 {<key>:{$lt:<value>}} db.col.find({"age":{$lt:50}}).pretty() where age < 50
小于或等于 {<key>:{$lte:<value>}} db.col.find({"age":{$lte:50}}).pretty() where age <= 50
大于 {<key>:{$gt:<value>}} db.col.find({"age":{$gt:50}}).pretty() where age > 50
大于或等于 {<key>:{$gte:<value>}} db.col.find({"age":{$gte:50}}).pretty() where age >= 50
不等于 {<key>:{$ne:<value>}} db.col.find({"age":{$ne:50}}).pretty() where age != 50
等于 {<key>:{$eq:<value>}} db.col.find({"age":{$eq:50}}).pretty() where age == 50
mongodb的and 条件
>db.col.find({key1:value1, key2:value2}).pretty()
pretty()表示格式化查询结果,
mongodb的and和or
db.col.find({"age": {$gt:50}, $or: [{"name": "张三"},{"address": "上海"}]}).pretty()
projection的格式
db.collection.find(query, {name: 1, address: 1}) // inclusion模式 指定返回的键,不返回其他键
db.collection.find(query, {name: 0, address: 0}) // exclusion模式 指定不返回的键,返回其他键
只能全是0或者全是1 , 不能一个0一个1 的情况
若不想指定query,但需要指定projection则使用querydb.collection.find({}, {title: 1})
db.getCollection('test').find().limit(1).skip(1)
查询指定数量的数据
排序:
db.COLLECTION_NAME.find().sort({KEY:1})注意数据类型不同的数据之间是不能比较的,意思是说如果age字段的值有string和int64则他们之间是不能排序的;
db.getCollection("test").find({
name:/张/
})
相当于 like "%张%"
db.getCollection("test").find({
name:/^张/
})
相当于 like "张%"
distinct 查询
db.getCollection("test").distinct("name")