一个 MongoDB 实例可以建立多个数据库。默认数据库名为 db,该数据库在 data 目录下
特殊数据库
adminlocalconfig文档是一组类似于 JSON 的键值对(BSON),不需要有相同的字段,也不需要字段有相同的类型
BSON:二进制的 JSON,相较于 JSON,BSON 的值是有数据类型的,而不是单一的字符串
数据类型:String、Integer、Boolean、Double、Min/Max keys、Array、Timestamp、Object、Null、Symbol、Date、Object ID(主键)、Binary Date、Code( JS 代码)、RE(正则表达式)
键值对是有序的。键是字符串,值有自己的数据类型,而不单纯是字符串区分类型和大小写文档命名规则如下:
文档不能有重复的主键(_id)键不能含有 \0,因为这代表字符串的结尾.、 $ 有特殊的意义,_ 开头的键是保留的集合就是一组文档,集合内的文档不要求结构一样
集合命名规则如下:
不能是空字符串 ""。
不能含有 \0 字符
不能以 system.开头,这是为系统集合保留的前缀
Capped Collection 追加的集合,大小要提前设置且是固定的,索引顺序也就是插入顺序,而且在磁盘上也是追加写的,意味着只能删除最后一条数据,或清空集合
保存了数据库各种信息的集合
集合命名空间描述dbname.system.namespaces列出所有名字空间dbname.system.indexes列出所有索引dbname.system.profile包含数据库概要信息dbname.system.users列出所有可访问数据库的用户dbname.local.sources包含复制对端的服务器信息和状态mongod:MongoDB 的服务端
mongo:MongoDB 的客户端
mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]查到数据才能改和删,所以查的乱七八糟的操作,也能作用于改与删上
查
db.col2.find() # 查看 col2 集合中所有文档 db.col2.find().limit(2) # 查看前两条数据 db.col2.find().skip(2) # 跳过前两条数据 db.col2.find().pretty # 以易读的方式展示 db.col2.find().sort({age: 1}) # 按照指定字段排序,1 升序,-1 降序 # g: great 大于 l: little 小于 e: euals 等于 n: not 不等于 db.col2.find({age: 18}) # 相当于 where age = 18 db.col2.find({age: {$lt: 18}}) # 相当于 where age < 18 db.col2.find({age: {$lte: 18}}) # 相当于 where age <= 18 db.col2.find({age: {$gt: 18}}) # 相当于 where age > 18 db.col2.find({age: {$gte: 18}}) # 相当于 where age >= 18 db.col2.find({age: {$ne: 18}}) # 相当于 where age != 18 # 与或 db.col2.find({name: "zhangsan", age: 18}) # 相当于 where name = "zhangsan" and age =18 db.col2.find({$or: [{name: "zhangsan"}, {name: "lisi"}]}) # 相当于 where name = "zhangsan" or name = "lisi" # 支持正则表达式 db.col2.find({name: /^w/}) # 根据类型 db.col2.find({name: {$type: "string"}})增
db.col2.insert({name: "zhangsan"}) # 在 col2 集合中插入一个文档 db.col2.insertOne({name: "lisi"}) # 在 col2 集合中插入一个文档 db.col2.insertMany([ {name: 'wangwu'},{name: 'maliu'} ]) # 在 col2 集合中插入多个文档删
db.col2.remove({name: "lisi"}) # 删除找到的文档,默认删除多条 db.col2.remove({name: "wangsan"},{justOne: true}) # 删除一条改
db.col2.update({name: "zhangsan"},{$set: {name: "wangsan"}}) # 更新找到的文档,默认更新一条 db.col2.update({name: "zhangsan"},{$set: {name: "wangsan"}},{multi: true}) # 更新多条 db.col2.save({_id: ObjectId("5f4fd299ed329eb546375c10"), name: "zhaosi"}) # _id 存在则替换原有文档,若不存在则插入一条文档后台创建索引,不会阻塞其他数据库操作