MongoDB 语法
数据库
-- 查看所有的数据库
show dbs;
-- 查看当前窗口所在的数据库
db;
-- 如果数据库不存在,则创建数据库,否则切换到指定数据库
use database;
-- 删除当前数据库,默认为 test,故要切换到某个数据库下进行删除
db.dropDatabase();
创建
-- 创建集合
db.createCollection("collectionName");
-- 查看集合
show collections;
-- 统计集合collection1中的数据数量
db.collection1.count();
-- 删除集合collection
db.collection1.drop();
-- 固定集合 size指定集合大小,单位为KB,max指定文档数量
db.createCollection("collectionName",{capped:true,size:10000,max:100});
固定集合特性:固定集合很想环形队列,如果空间不足,最早的文档就会被删除,为新的文档腾出空间。一般来说,固定集合适用于任何想要自动淘汰过期属性的场景,没有太多的操作限制
插入
-- 插入一条 insert 、insertOne 均可
db.user.insertOne({name: "张三", age: 20});
-- 输出结果:
// {
// "acknowledged" : true,
// "insertedId" : ObjectId("5f1c89b3c9d79812f8c8a7d1")
// }
-- 也可以自定义 _id 字段
db.users.insertOne({
_id: "user_001",
name: "Bob",
age: 25
})
-- 插入多条
db.user.insertMany([{name: "张三", age: 20}, {name: "李四", age: 20}]);
查询
-- 查询年龄20的数据
db.user.find({age:20})
-- 查询年龄20,只返回 name字段(1展示,0 不展示;设置0的话,返回除了name以外的所有字段)
db.user.find({age:20},{name:1})
-- 查询一条数据
db.user.findOne();
-- 查询 age 大于 10的数据
db.collection1.find({age:{$gt:10}});
-- 查询所有price包含1和2的数据
db.collection1.find({price:{$all:[1,2]}});
--
db.collection1.find({price:{$nin:[1,2]}});
--
db.collection1.find({$or:[{name:"xiaomu"},{price:{$in:[3]}}]});
- gt 大于
- lt 小于
- gte 大于等于
- lte 小于等于
- ne 不等于
- all 包含所有
- in 包含
- nin 不包含
- or 或
- nor 既不也不
分页
db.collection1.find().skip(0).limit(10);
排序
-- 按年龄排序 1:升序 -1:降序
db.collection1.find().sort({age:1});
exists
-- 查询存在 age 字段的数据
db.collection1.find({age:{$exists:1}});
删除
-- 删除age为7,name为xiaomu的数据
db.collection1.remove({age:7,name:"xiaomu"})
更新
-- 将age为12的满足条件数据的第一条整条数据覆盖为name:“xiaoxiao”
db.c3.update({age:12},{name:"xiaoxiao"});
-- 只修改了查询到的第一条数据
db.c3.update({age:15},{$set:{name:"xiaolili"}});
--第3个参数1表示如果没有符合条件的记录是否新增一条记录,1表示新增,0表示不新增
--第4个参数表示有多条数据符合筛选条件的话是否全部更改,默认为0只改第一条,1表示全部更改
db.c3.update({age:15},{$set:{name:"xiaolili"}},1,1);
-- $inc表示使某个键值加减指定的数值,此处表示将name为xiaoxiao的数据的age字段的值减2
db.c3.update({age:12},{name:"xiaoxiao"},{$inc:{age:-2}},1,1);
-- $unset用来删除某个键,此处表示删除name为xiaoxiao的数据的age字段
db.c3.update({age:12},{name:"xiaoxiao"},{$inc:{age:1}},0,1);
索引
-- mongo默认为每条数据的_id字段建索引
-- 为age字段建普通索引
db.c3.ensureIndex({age:1});
-- 删除age字段的索引
db.c3.dropIndex({age:1});
-- 为age字段建唯一索引,在为字段建了唯一索引后就不能再添加相同值的记录了
db.c3.ensureIndex({age:1},{unique:true});

浙公网安备 33010602011771号