1、数据库
MongoDB初始启动的时候,内置的三个数据库admin,config,local,可以使用命令show dbs查看所有的数据库,使用db查看当前所处的数据库,使用use dbName来初始化创建或者切换数据库。使用db.dropDatabase()来删除数据库,此函数默认删除当前数据库。
show dbs ---查看所有数据库,命令行
db ----查看当前数据库,命令行
use mongoTest ---如果mongoTest数据库存在则切换至此数据库,如果不存在则创建数据库并切换至此数据库。只有在此数据库中插入数据,才会真正创建数据库,譬如db.mongoTest.insert({a:2}),此时mongoTest数据库才建立。
2、表
MongoDB中表的概念是集合,也即是collections。显示数据库中的所有表使用show collections。创建表,插入数据的时候就默认会创建表,譬如db.t_user.insert({name:"mengmiao",age:6,sex:'man'}),此时t_user即为表名,插入函数是基于表的
3、记录
Mongobd中记录的概念就是文档,即document,表中的字段和类型没有强制要求,文档的集合即为表,MongoDB中表的没有固定的列名,类型。是文档形式的。这就是mongo的特色之所在。记录即文档的大小限制,文档最大不能超过4M。
可以使用Object.bsonsize(doc);可以查看文档转为bson格式时的大小。
当前MongoDB的协议消息的最大长度限制是16M,所以在做批量插入时要注意这个限制。
MongoDB将文档保存到集合中时,不执行文档,这样做天生就避免了注入攻击,使数据库更安全。
MongoDB删除数据是永久性的,不能撤销,也不能恢复。
新增记录:
插入一条:
db.inventory.insertOne(
{ item: "canvas", qty: 100, tags: ["cotton"], size: { h: 28, w: 35.5, uom: "cm" } }
);
插入多条:
db.inventory.insertMany([
{ item: "journal", qty: 25, tags: ["blank", "red"], size: { h: 14, w: 21, uom: "cm" } },
{ item: "mat", qty: 85, tags: ["gray"], size: { h: 27.9, w: 35.5, uom: "cm" } },
{ item: "mousepad", qty: 25, tags: ["gel", "blue"], size: { h: 19, w: 22.85, uom: "cm" } }
])
查询记录:
查询所有:
db.inventory.find()
按条件查询:
db.inventory.find({item:"mat"})
db.inventory.find( { status: { $in: [ "A", "D" ] } } )
db.inventory.find( { status: "A", qty: { $lt: 30 } } ) ---$lt = <
db.inventory.find( { $or: [ { status: "A" }, { qty: { $lt: 30 } } ] } ) ---status = "A" OR qty < 30
db.inventory.find( {
status: "A",
$or: [ { qty: { $lt: 30 } }, { item: /^p/ } ]
}) --- status = "A" AND ( qty < 30 OR item LIKE "p%")
db.inventory.find( { item: null } )
db.inventory.find( { item : { $exists: false } } )
更新记录:
更新一条:
db.inventory.updateMany(
{ "qty": { $lt: 50 } },
{
$set: { "size.uom": "in", status: "P" },
$currentDate: { lastModified: true }
}
)
更新多条:
db.inventory.updateOne(
{ item: "paper" },
{
$set: { "size.uom": "cm", status: "P" },
$currentDate: { lastModified: true }
}
)
替换一条:
db.inventory.replaceOne(
{ item: "paper" },
{ item: "paper", instock: [ { warehouse: "A", qty: 60 }, { warehouse: "B", qty: 40 } ] }
)
删除记录:
删除一条:
db.inventory.deleteOne( { status: "D" } )
删除多条:
db.inventory.deleteOne({ "qty": { $lt: 50 } })
删除全部:
db.inventory.deleteMany({})
删除表,也就是删除collections:
db.drop_collection("inventory");
4、db.collections.insert(), db.collections.insertOne(), db.collections.insertMany()的区别
使用insert方法,可以进行插入一条或者多条的操作,但shell界面打印的回执不同。使用insertOne插入一条文档,使用insertMany插入多条文档。insert方法被弃用,新版本基本上都使用insertOne或者insertMany。