MongoDB笔记(二)

【摘要】 三、基本常用命令
3.1 选择和创建数据库
–选择数据库,如果数据库不存在会自动创建
–use后,一开始是在内存中的,并没有持久化到磁盘, 当有一个集合后会持久化
use 数据库名称(全部小写,最长64字节)
–查看有权限查看的所有数据库,没有集合的数据库不会显示,还在内存中
show dbs
–查看正在使用的数据库
db
1234567
MongoDB中…

三、基本常用命令

3.1 选择和创建数据库

--选择数据库,如果数据库不存在会自动创建
--use后,一开始是在内存中的,并没有持久化到磁盘, 当有一个集合后会持久化
use 数据库名称(全部小写,最长64字节)
--查看有权限查看的所有数据库,没有集合的数据库不会显示,还在内存中
show dbs
--查看正在使用的数据库
db

  
 
  • MongoDB中,集合只有在第一条数据插入后才会创建
  • 默认数据库为test,如果没有选择数据库,集合都会存放到test数据库中

保留数据库:

  • admin:root数据库,一些特定的服务器端命令只能从这个数据库运行,比如:列出所有的数据库或关闭服务器
  • local:这个数据库中的数据永远不会被复制,可以用来存储仅限于本地单台服务器的任意集合。 比如集群环境中,有的数据我们不希望被复制到别的服务器
  • config:当MongoDB用于分片设置时,config数据库在内部使用,用于保存分片的相关信息

3.2 删除数据库

-- 用于删除已经持久化的数据库
db.dropDatabase()

  
 

3.3 集合操作

3.3.1 集合的显示创建(了解)

db.createCollection("collection_name")
-- 查看当前库中的集合
show collections / show tables
-- 集合删除
db.collection_name.dorp()

  
 

3.3.2 集合的隐式创建

当向集合中插入一个文档的时候,如果集合不存在,则会自动创建。
TODO 自动创建如何保证线程安全????
通常项目中我们使用隐式创建

  
 

3.4 文档CRUD

3.4.1 插入:

insert() / save() / insertMany

// 单条插入
db.collection_name.insert( <document or array of documents>, { writeConcern: <document>, ordered: <boolean> }
)

// 例子
// mongodb中数字默认是double,如果要存整型,必须使用函数NumberInt(),否则取出来出错
// 使用当前日期,可以使用new Date()
// _id会自动生成
db.tangye_test_tb1.insert({"userId":"123", "num":NumberInt(10),"createDateTime":new Date(), "state":null})

// 批量插入
db.collection.insertMany( [ <document 1> , <document 2>, ... ], { writeConcern: <document>, ordered: <boolean> }
)
// 例子
db.comment.insertMany([{ "_id": "1", "articleid": "100001", "content": "我们不应该把清晨浪费在手机上,健康很重要,一杯温水幸福你我 他。", "userid": "1002", "nickname": "相忘于江湖", "createdatetime": new Date("2019-08- 05T22:08:15.522Z"), "likenum": NumberInt(1000), "state": "1"
},
{ "_id": "2", "articleid": "100001", "content": "我夏天空腹喝凉开水,冬天喝温开水", "userid": "1005", "nickname": "伊人憔 悴", "createdatetime": new Date("2019-08-05T23:58:51.485Z"), "likenum": NumberInt(888), "state": "1"
}]);

  
 
  • 插入时指定了 _id ,则主键就是该值。
  • 如果某条数据插入失败,将会终止插入,但已经插入成功的数据不会回滚掉。
  • 因为批量插入由于数据较多容易出现失败,因此,可以使用try catch进行异常捕捉处理,测试的时候可以不处理
Parameter Type Description
document document or array 要插入到集合中的文档或文档数组(json格式)
writeConcern document 性能和可靠性级别 PS:通常不指定
ordered boolean 可选,插入的数组是有序的还是无序的。
true:按顺序插入数组中的文档,如果其中一个文档出现错误,将返回而不处理数组中的其余文档;
false:则执行无序插入,如果其中一个文档出现错误,则继续处理数组中的文档。 版本2.6+中默认为true PS:通常默认即可,不指定
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享