MongoDB的CRUD操作
命令 | 描述 |
---|---|
db.集合名.insert(docunment) | 数据的添加 |
db.集合名.save(document) | 如果数据存在就更新,不存在就添加 |
db.集合名.update(query,update,multi) | query:查询条件,类似SQL语句update中的where部分 update:更新操作符,类似SQL语句update中的set部分 multi:可选,默认是false,表示只更新找到的第一条记录,值为true表示把满足条件的文档全部更新 |
db.集合名.remove(query) | 删除数据,query为删除条件 |
一 、insert插入数据
创建数据库
命令行窗口插入数据
GUI窗口插入数据
批量插入数据
方式一
db.student.insert([{'name':'李四','gender':'女'},{'name':'王五','age':20},{'name':'承留','gender':'女'}])
方式二
for(i=20;i<=25;i++){db.student.insert({'name':'绮梦','age':i})}
二、 save插入数据
db.student.insert({'_id':1,'name':'marry'})
db.student.insert({'_id':1,'name':'lili'})
db.student.save({'_id':1,'name':'lili'})
insert与save的区别
- 若集合中已有当前ID,则insert插入会报错,而save会执行更新操作
- 如果集合中的没有当前ID,则save执行的是插入操作
三、 update更新数据
更新数据时,在待更新的字段后需要将原数据其他内容补齐,否则会丢失
db.student.update({'name':'marry'},{'age':25,'name':'marry','gender':'男'})
使用$set可以保留原数据,不用再次手动补充
db.student.update({'name':'李四'},{$set:{'age':20}})
第三个参数multi默认为false,只更新符合条件的第一条数据,若为true,将对符合条件的所有数据进行更新
db.student.update({'name':'李四'},{$set:{'age':25}},{'multi':true})
四、remove删除数据
将姓名为lili的学生数据全部删除
db.student.remove({'name':'lili'})
将符合条件的一条数据删除{‘justOne’:true}
db.student.remove({'name':'王五'},{'justOne':true})
清空集合:db.student.remove({})
db.student.remove({})
五、查询操作
MongoDB中的查询命令
命令 | 描述 |
---|---|
db.集合名.find({条件文档}) | 查找所有的匹配数据 |
db.集合名.findOne({条件文档}) | 只返回匹配的第一个数据 |
db.集合名.find().limit(number) | 用于读取指定数量的文档 |
db.集合名.find().skip(number) | 用于跳过指定数量的文档 |
db.集合名.find().sort() | 1为升序,-1为降序 |
db.集合名.find({条件}).count() | 用于统计结果集中文档条数 |
db.集合名.distinct(field) | 去重 |
MongoDB的比较符号
符号 | 含义 | 示例 |
---|---|---|
$eq | 等于 | {‘age’:20} |
$lt | 小于 | {‘age’:{’$lt’:20}} |
$gt | 大于 | {‘age’:{’$gt’:20}} |
$lte | ≤ | {‘age’:{’$lte’:20}} |
$gte | ≥ | {‘age’:{’$gte’:20}} |
$ne | 不等于 | {‘age’:{’$ne’:20}} |
$in | 在范围内 | {‘age’:{’$in’:[20,23]}} |
$nin | 不在范围内 | {‘age’:{’$nin’:[20,23]}} |
$or | 或 | {$or:[{},{}]} |
(1)查询所有数据
db.student.find()
(2)查询匹配数据
db.student.find({'name':'张三'})
(3)返回匹配的第一条数据
db.student.findOne({'name':'绮梦'})
(4)等值查询:查询年龄为20的数据
db.student.find({'age':20})
或
db.student.find({'age':{'$eq':20}})
(5)非等值查询
查询年龄小于22的数据
db.student.find({'age':{'$lt':22}})
查询年龄小于(大于)等于22的数据
db.student.find({'age':{'$lte':22}})
或
db.student.find({'age':{'$gte':22}})
查询年龄在(不在)【20,23】范围内的数据
db.student.find({'age':{'$in':[20,23]}})
或
db.student.find({'age':{'$nin':[20,23]}})
查询年龄是20或名字是绮梦的数据
db.student.find({'$or':[{'age':20},{'name':'绮梦'}]})
(6)模糊查询
查询姓名中有“绮”字的数据
db.student.find({'name':/绮/})
//或正则写法
db.student.find({'name':{$regex:'绮'}})
查询年龄大于20的数据
//JS写法
db.student.find({$where:function(){return this.age>20}})
(7)读取指定数量文档:查询前三条数据
db.student.find().limit(3)
(8)跳过指定数量文档:跳过3条再查3条(查询第四五六条数据)
db.student.find().limit(3).skip(3)
(9)排序:按年龄升序(降序)排列
//升序
db.student.find().sort({age:1})
//降序
db.student.find().sort({age:-1})
(10)统计数据条数
查询所有数据条数
db.student.find().count()
查询姓名是“绮梦”的数据个数
db.student.find({'name':'绮梦'}).count()
(11)去重
查询所有同学的年龄值
db.student.distinct('age')
(12)判断数据是否存在
查询有年龄列的数据
查询有(没有)年龄列的数据
// 有年龄 db.student.find({'age':{$exists:true}})
// 无年龄 db.student.find({'age':{$exists:false}})