数据库操作(database)
mongo shell 使用javascript,语法大部分与其一致
- 创建数据库:
use DATABASE_NAME
- 显示当前进入的数据库:
db
- 查看所有的数据库:
show dbs
- 删除数据库(删除的是当前使用的数据库):
db.dropDatabase()
集合操作(collection)
- 创建集合:
db.createCollection(name, options)
字段 | 类型 | 描述 |
---|---|---|
capped | 布尔 | (可选)如果为 true,则创建固定集合。固定集合是指有着固定大小的集合,当达到最大值时,它会自动覆盖最早的文档。当该值为 true 时,必须指定 size 参数。 |
autoIndexId | 布尔 | (可选)如为 true,自动在 _id 字段创建索引。默认为 false。 |
size | 数值 | (可选)为固定集合指定一个最大值(以字节计)。如果 capped 为 true,也需要指定该字段。 |
max | 数值 | (可选)指定固定集合中包含文档的最大数量。 |
在 MongoDB 中,你不需要创建集合。当你插入一些文档时,MongoDB 会自动创建集合。
- 删除集合
db.collection_name.drop()
文档操作(document)
- 插入文档:
可使用 insert() 或 save() 方法向集合中插入文档,当新增的文档存在主键(_id),且集合内存在主键相同的文档时,insert() 会提示错误,而save() 则更改原来的内容为新内容
db.collection_name.insert({"name":"迷藏"})
或者
document ={"name":"迷藏"}
db.collection_name.insert(document)
collection_name为集合名
注意: 在 MongoDB 中,集合只有在内容插入后才会创建! 就是说,创建集合(数据表)后要再插入一个文档(记录),集合才会真正创建。
- 查看文档:
db.collection_name.find()
- 更新文档:
db.collection.update(<query>, <update>, { upsert: <boolean>, multi: <boolean>, writeConcern: <document> })
参数 | 描述 |
---|---|
query | update的查询条件,类似sql update查询内where后面的。 |
update | update的对象和一些更新的操作符(如inc...)等,也可以理解为sql update查询内set后面的 |
upsert | 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。 |
multi | 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。 |
writeConcern | 可选,抛出异常的级别。 |
示例 :db.collection_name.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}},{multi:true})
-
save方法更新:
db.collection.save(<document>,{writeConcern:<document>})
-
删除文档(过时):
db.collection.remove( <query>, { justOne: <boolean>, writeConcern: <document> } )
-
如删除集合下全部文档:
db.col.remove({})
db.collection.deleteMany({})
-
删除 status 等于 A 的全部文档:
db.collection.deleteMany({ status : "A" })
-
删除 status 等于 D 的一个文档:
db.collection.deleteOne( { status: "D" } )
-
查询文档:
db.collection.find(query, projection)
若不想指定查询条件参数 query 可以 用 {} 代替,但是需要指定 projection 参数:
若不指定 projection,则默认返回所有键,指定 projection 格式如下,有两种模式
db.collection.find(query, {title: 1, by: 1}) // inclusion模式 指定返回的键,不返回其他键
db.collection.find(query, {title: 0, by: 0}) // exclusion模式 指定不返回的键,返回其他键
除了 find() 方法之外,还有一个 findOne() 方法,它只返回一个文档。
-
易读:pretty()
db.col.find().pretty()
-
多条件查询:
And
db.col.find({key1:value1, key2:value2}).pretty()
Or
db.col.find( { $or: [ {key1: value1}, {key2:value2} ] } ).pretty()
- 操作符
(>) 大于 - $gt
(<) 小于 - $lt
(>=) 大于等于 - $gte
(<= ) 小于等于 - $lte
db.col.find({likes : {$lt :200, $gt : 100}})
网友评论