MongoDB
#Go #数据库
MongoDB概念
- 数据库 =存放=》
- 集合 =存放=〉
- 文档
- 集合 =存放=〉
- 集合和数据库都会自动在创建文档时创建
MongoDB 基本操作
数据库操作
- show dbs
- use database
- db
CRUD
- db..insert() , 也可以用insertOne(), insertMany()
- Doc以json格式, 但是key不用双引号包围
- 可以同时插多个
- 自动为doc添加_id 属性, 根据时间戳生成, 作为唯一标识, 也可以自己在添加时指定
- Db..find() 返回的是一个数组
- 无参/空对象, 查出所有文档
- 可以传入对象(json), 作为条件 (有点像orm?)
- findOne( ) 返回符合的第一个文档(不是数组了, 就是文档对象)
- Db..update( 查询条件, 新对象(整个替换) ) =》 默认只改第一个, 改多个需要 updateMany( )
- 如果只修改某个属性, 使用修改操作符, ¥operator:{ }
- $set 修改指定属性
- $unset 删除文档的指定属性
- 如果只修改某个属性, 使用修改操作符, ¥operator:{ }
- db..remove( )/ deleteOne( ) / deleteMany( )
- 参数为 查询条件, 必须传参! 如果想删除全部, 需要传入空对象或者使用db..drop()
- Drop的话连着collection也删除了, remove只删除了记录
- 默认多删
- 实际项目一般保留数据, 所谓的删除实际上是另设置的字段, 表示是否可见
- 参数为 查询条件, 必须传参! 如果想删除全部, 需要传入空对象或者使用db..drop()
文档间的关系
- NoSQL
- One to one
- 内嵌文档
- 在文档对象的内部, 再定义另一个字段的对象
- 内嵌文档
- One to many / many to one
- 在多方的表里加入属性(得是能唯一标识的), 指明对应的是哪一个单方
- Many to many
- 添加数组属性, 表明所对应的文档
Sort和投影
- 查询文档默认按_id 升序排列
- 查询语句后面加 .sort( { : 1 } ) 来排序, 1为升, -1为降, 可以多个properties组合, 来指定排序的主序、副序
- find( )的第二个参数, 可以传入一个对象来指明投影: Ep. { num : 1 } 1为true, 0为false
With Golang ..
- Config
- ConnectString and DB
- Use
Bongo.Connect(config)to connect to server.
- Documents
- Use structs to express the documents.
- CRUD
- **connection.Collection( ).**FindOne( )