在《MongoDB的安装》 一文中,有数据库创建,集合(数据表)的创建。今天我们就要开始向集合中操作数据了。
数据库相关命令
命令说明 | 命令 |
---|---|
查看所有数据库 | show databases; |
使用数据库 | use db_name |
创建数据库 | use new_db_name |
查询当前所在库 | db |
删除当前数据库 | db.dropDatabase(); |
数据库相关帮助 | db.help; |
注意命令的大小写!!
创建集合
- 显示创建
> use dong
> db.createCollection('t1');
{ "ok" : 1 }
- 隐式创建
向不存在的表中,直接插入数据
> db.t_emp.insert({name:'dd_jiang'});
WriteResult({ "nInserted" : 1 })
我们在这里造一些测试数据,然后继续接下来的测试学习。
插入数据
一次插入一个值
语法:db.集合名称.insert({"key":"values" , "key1":"values1" , .... })
> db.t_emp.insert({name:"dd.jiang", age:23 , sex:"F" , bir:"2020-05-01"});
WriteResult({ "nInserted" : 1 })
插入后查询数据
> db.t_emp.find();
{ "_id" : ObjectId("5e6d3e47aa1903faf1c3ce0c"), "name" : "dd_jiang" }
{ "_id" : ObjectId("5e6d484b6f33220fb3e090cd"), "name" : "dd.jiang", "age" : 23, "sex" : "F", "bir" : "2020-05-01" }
!! 注意:默认MongoDB在插入数据中自动创建一个 _id
那么我们可以改变 _id 的值,可以这样做
> db.t_emp.insert({"_id":"xxxx", age:23 , sex:"F" , bir:"2020-05-01"});
WriteResult({ "nInserted" : 1 })
> db.t_emp.find();
{ "_id" : ObjectId("5e6d3e47aa1903faf1c3ce0c"), "name" : "dd_jiang" }
{ "_id" : ObjectId("5e6d484b6f33220fb3e090cd"), "name" : "dd.jiang", "age" : 23, "sex" : "F", "bir" : "2020-05-01" }
{ "_id" : ObjectId("5e6d48e66f33220fb3e090ce"), "name" : "MongoDB", "age" : 23, "sex" : "F", "bir" : "2020-05-01" }
{ "_id" : "xxxx", "age" : 23, "sex" : "F", "bir" : "2020-05-01" }
一次插入多个值 (数组的概念)
语法:db.集合名称.insert ( [ {"key":"values" , ...} , {"key1":"values1" , .... } ]);
- 支持js代码插入多个值
在这里我们可以造一些数据,在后面的测试使用
for ( var i=0 ; i<50 ; i++) {
db.t_user.insert({id:i , name:"dong" , age:n = i + 10})} ;
查询数据
> db.t_user.find();
{ "_id" : ObjectId("5e6d4b346f33220fb3e090cf"), "id" : 0, "name" : "dong", "age" : 10 }
{ "_id" : ObjectId("5e6d4b346f33220fb3e090d0"), "id" : 1, "name" : "dong", "age" : 11 }
{ "_id" : ObjectId("5e6d4b346f33220fb3e090d1"), "id" : 2, "name" : "dong", "age" : 12 }
{ "_id" : ObjectId("5e6d4b346f33220fb3e090d2"), "id" : 3, "name" : "dong", "age" : 13 }
{ "_id" : ObjectId("5e6d4b346f33220fb3e090d3"), "id" : 4, "name" : "dong", "age" : 14 }
{ "_id" : ObjectId("5e6d4b346f33220fb3e090d4"), "id" : 5, "name" : "dong", "age" : 15 }
{ "_id" : ObjectId("5e6d4b346f33220fb3e090d5"), "id" : 6, "name" : "dong", "age" : 16 }
{ "_id" : ObjectId("5e6d4b346f33220fb3e090d6"), "id" : 7, "name" : "dong", "age" : 17 }
{ "_id" : ObjectId("5e6d4b346f33220fb3e090d7"), "id" : 8, "name" : "dong", "age" : 18 }
{ "_id" : ObjectId("5e6d4b346f33220fb3e090d8"), "id" : 9, "name" : "dong", "age" : 19 }
表中数据量较多,默认只显示20行,输入"IT" 可继续查看更多。
删除数据
删除集合中所有数据
db.t_user.remove();
按照条件删除数据,多条件时为并且的关系
db.t_user.remove({name:"dong" , age:19 });
修改数据
修改整行,所有列
这种方式更新时,将符合条件的行删除,在插入
db.t_user.update({更新条件} , {更新内容} )
db.t_user.update( {id:0} ,
{name:"jiang"} )
修改指定列,添加新列
保留原有的列, 修改指定的列值, 添加新的列和值
db.t_user.update({更新条件} , {$set:{更新内容}} )
db.t_user.update( {id:1} ,
{$set:{name:"jiang", add:"BJ"}} )
修改所有满足条件的行
修改多条数据, 默认只更新一条数据
db.t_user.update({更新条件} , {$set:{更新内容}} , {multi:true} )
db.t_user.update( {name:"dong"} ,
{$set:{add:"BJ"}} ,
{multi:true}
)
插入未满足更新的行
修改多条数据, 如果没有满足条件的行,那么进行插入操作
db.t_user.update({更新条件} , {$set:{更新内容}} , {multi:true , upsert:true} )
db.t_user.update( {name:"Dr.Wang"} ,
{$set:{add:"BJ"}} ,
{multi:true} ,
{upsert:true}
)
修改自增
某个values在原值基础上增加 + n
db.t_user.update({id:1} , {$inc:{age:10}} )