在MongoDB中,第一步也是创建数据库和集合。数据库用于存储所有集合,而集合又用于存储所有文档。这些文档将依次包含相关的“字段名”和“字段”值。JSON中的key-value形式。

1、使用数据库、创建数据库(相当于集合)

  • 使用“use”命令创建数据库
  • 使用insert()创建集合/表
  • 使用insert()命令添加文档
-- 创建数据库
use  zhw

-- 查看数据库
show dbs

-- 显示当前的数据集合(mysql 中叫表)
show collections

-- 删除集合,删除指定的集合 删除表 删除集合 db.COLLECTION_NAME.drop()

db.zhw.drop()

-- 删除数据库,删除当前所在的数据库

db.dropDatabase();

    数据库要想创建成功,那么必须插入一个数据。数据库中不能直接插入数据,只能往集合(collections)中插入数据。下面命令表示给 itying 数 据库的 user 表中插入数据。

2.插入数据 (插入数据,随着数据的插入,数据库创建成功了,集合也创建成功了。)

-- 插入一条数据
db.zhw.insert({ item: "card", qty: 15 });
-- 插入多条数据
db.zhw.insertMany( [
      { item: "card", qty: 15 },
      { item: "envelope", qty: 20 },
      { item: "stamps" , qty: 30 }
   ] );

3.查询所有数据(带条件和不带条件)

-- 不带条件
db.zhw.find();

-- 带条件
db.zhw.find({"item":"card"});

-- 查询 qty>20
db.zhw.find({"qty":{$gt:20}})

-- 查询去掉后的当前聚集集合中的某列的重复数据
db.zhw.distinct("qty");

-- 查询 qty<22 的记录
db.zhw.find({qty:{$lt:22}});

-- 查询 qty>=25 的记录
db.zhw.find({qty:{$gte:25}});//相当于:select*from zhw where qty>=25;

-- 查询 qty<=25 的记录
db.zhw.find({qty:{$lte:25}});

--查询 qty>=23 并且 qty<=26 注意书写格式
db.zhw.find({qty:{$gte:23,$lte:26}});

-- 查询 name 中包含 mongo 的数据 模糊查询用于搜索
db.zhw.find({name:/mongo/});//相当于%% select * from zhw where name like ‘%mongo%’;

-- 查询 name 中以 mongo 开头的
db.zhw.find({name:/^mongo/});//select * from zhw where name like ‘mongo%’;

-- 查询指定列 name、qty 数据
-- 相当于:select name,qty from zhw ;当然 name 也可以用 true 或 false,
-- 当用 ture 的情况下河 name:1 效果一样,如果用 false 就 是排除 name,显示 name 以外的列信息
db.zhw.find({},{name:1,qty :1});

-- 查询指定列 name、qty 数据,qty >25
-- 相当于:select name,qty from zhw where qty >25;
db.zhw .find({qty :{$gt:25}},{name:1,qty :1});//

-- 按照qty 排序 1 升序 -1 降序
升序: db.zhw.find().sort({qty:1});
降序: db.zhw.find().sort({qty:-1});
-- 查询 name=zhangsan,qty=22 的数据
--相当于:select * from zhw where name= ‘zhangsan’ and qty= ‘22’;
db.zhw.find({name:'zhangsan',qty:22});

-- 查询前 5 条数据
db.zhw.find().limit(5);//相当于:select top5* from zhw;

-- 查询 10 条以后的数据
db.zhw.find().skip(10);

-- 查询在 5-10 之间的数据 可用于分页,limit 是 pageSize,skip 是(page-1)*pageSize
db.zhw.find().limit(10).skip(5);

-- or 与 查询 相当于:select * from zhw where qty=22 or qty=25;
db.zhw.find({$or:[{qty:22},{qty:25}]});

-- findOne 查询第一条数据 相当于:select top1* from zhw;
db.zhw.findOne();
db.zhw.find().limit(1);

-- 查询某个结果集的记录条数 统计数量
--相当于:select count(*) from user where qty>=20;
db.zhw.find({qty:{$gte:25}}).count(); 

-- 如果要返回限制之后的记录数量,要使用 count(true)或者 count(非 0) db.zhw.find().skip(10).limit(5).count(true);

游标:

  当使用db.collection.find()函数在集合中搜索文档时,结果将返回指向文档集合的指针,该指针称为游标。默认情况下,返回查询结果时,游标将自动进行迭代。当然可以一个接一个明确展示游标中返回的结果目录。下面的例子,在我们的集合中有3个文档,光标对象将指向第一个文档,然后遍历该集合的所有文档。

MongoDB数据库管理系统概述 mongodb数据库使用_数据库

MongoDB中的主键:

    在MongoDB中,_id字段是集合的主键,以便可以在集合中唯一地标识每个文档。_id字段包含唯一的ObjectID值。 该主键还可以自定义如:

db.zhw.insert({"_id":1, "item": "card", qty: 15 });
db.zhw.find({"_id":1});

4.查询去掉后的当前聚集集合中的某列的重复数据

db.zhw.distinct("qty");

5.修改数据

-- 更新一条数据
db.zhw.update({"item":"card"},{$set:{"qty":11}});
-- 全部更新
db.zhw.update({"item":"card"},{$set:{"qty":11}},{multi:true});

另一种写法:

db.zhw.update({item:'card'},{$inc:{qty:50}},false,true); 
相当于:update zhw set qty=qty+50 where item= ‘card’;

db.zhw.update({item:'card'},{$inc:{qty:50},$set:{item:'hoho'}},false,true);
相当于:update zhw set qty=qty+50,item= ‘hoho’ where item= ‘card’;

6.删除数据

-- 删除一条数据
db.zhw.remove( {"item":"card"},{justOne:true})

-- 删除多条数据
db.restaurants.remove( {"item":"card"})

官方文档:https://docs.mongodb.com/manual/sharding/

社区:https://mongoing.com/archives/docs/mongodb初学者教程/mongodb分片