创建数据库
use DATABASE_NAME
eg: 创建test数据库
use test
如果数据库不存在则创建数据库,若存在则切换到该数据库。若数据库中没有数据,则不予显示。
删除数据库
切换到数据库,以test数据库为例子
use test
db.dropDatabase()
插入数据(集合)
一般我们在mongodb中是以集合为单位,一个集合就为一条数据。插入语句有两个方法,insert()和save(),区别在于insert只能用于插入,若insert()方法插入的集合id在数据库中已经有,则会抛出异
org.springframework.dao.DuplicateKeyException
提示主键重复,不保存当前数据。使用save()方法主要在于在插入集合之前会先去通过查询数据库中是否有相同的id,若有则是更新,若没有则会创建一个新的集合。
db.COLLECTION_NAME.insert(document)
db.COLLECTION_NAME.save(document)
eg: 插入一条数据(一个集合)
db.user.inster({firstname: 'Larry', 'lastname': 'Smith', age: 18, hobby: ['旅行', '美食']})
db.user.save({firstname: 'Larry', 'lastname': 'Smith', age: 18, hobby: ['旅行', '美食']})
还可以将需要插入的集合用一个变量保存起来,然后再使用插入方法进行插入。
eg: 使用变量方式插入
document = ({firstname: 'Larry', 'lastname': 'Smith', age: 18, hobby: ['旅行', '美食']});
db.user.insert(document)
db.user.save(document)
删除数据(集合)(mongodb > 2.6)
语法:
- 删除该集合的所有数据
db.COLLECTION_NAME.remove({})
- 条件删除
db.COLLECTION_NAME.remove(
<query>, // 查询条件
{
justOne: <boolean> [true, 1] | [false, 0], // 是否只删除符合条件的第一条数据
writeConcern: <document> // 异常信息
}
)
eg: 删除test数据库user集合中firstname为齐天的所有集合
db.user.remove({firstname: '齐天'})
eg: 删除test数据库user集合中firstname为齐天的数据中第一个集合
db.user.remove({firstname: '齐天'}, true)
更新数据(集合)
语法:
db.COLLECTION_NAME.update(
<query>, // 筛选条件
<update>, // 更新操作
{
upsert: <boolean>, // 没有找到是否插入作为新的集合
multi: <boolean>, // 是否多条修改
writeConcern: <document> // 异常信息
}
)
eg: 修改test数据库user集合中firstname为齐天的一条集合
db.user.update({firstname: '齐天'}, {$set: {firstname: '孙'}})
eg: 数据库中不存在该集合,插入该集合作为一个新的集合。
db.user.update({firstname: '二', lastname: '师兄'}, {$set: {firstname: '猪', lastname: '八戒'}}, true)
eg: 修改test数据库user集合中firstname为齐天的所有集合
db.user.update({firstname: '齐天'}, {$set: {firstname: '孙'}}, false, true)
查询
语法:
db.COLLECTION_NAME.find(
<query>, // 查询条件
<projection> // 使用投影操作符指定返回的键
)
eg: 查询test.user全部数据
db.test.user.find()
eg: 查询test.user中firstname为"齐天"的所有集合
db.test.find({firstname: '齐天'})
排序
sort()方法用于排序。将需要的字段作为参数,在给与属性1和-1分别表示升序和降序。
eg: 查询test.user中firstname为"齐天"的所有集合,按age字段降序显示
db.test.user.find({firstname: '齐天'}).sort({age: -1})
分页(limit, skip)
eg: 查询test.user前5条数据
db.test.user.find().limit(5)
eg: 查询test.user5条数据,跳过前5条
db.test.user.find().limit(5).skip(5)
操作符(附录)
- (>) 大于 - $gt
- (<) 小于 - $lt
- (>=) 大于等于 - $gte
- (<= ) 小于等于 - $lte
- (or) 或者 - $or:[条件1, 条件2,…]