向数据库中插入文档
db.collection.insert()
该方法可以用来向集合中插入一个或多个文档
插入一个传对象,插入多个传数组
当向集合中插入文档时,MongoDB会自动为文档添加_id属性
该属性值是自动生成的,该属性是为了标识文档的唯一性
也可以手动指定_id属性,如果手动指定了,则数据库不会自动添加,但是手动指定的_id也必须确保唯一,不要手动指定_id
db.collection.insertOne()
该方法用于向集合中插入一个文档,它只能接受一个对象作为参数
db.collection.insertMany()
该方法用于向集合中插入多个文档,它只能接受一个数组作为参数
相关代码:
use test;
show collections;
db.stus.find();
//向stus中插入一个文档
db.stus.insert({
name:"gzl",
age:16
});
//向stus中插入多个文档
db.stus.insert([
{
name:"zlx",
age:28
},
{
name:"yxj",
age:18
}
]);
db.stus.insert({
_id:"hello",
name:"gzz",
age:16
});
ObjectId();
文档的查询
db.collection.find(查询条件);
该方法可以根据指定的条件,查询所有符合条件的文档
如果不传任何的查询条件,则会查询所有的文档
查询条件是以对象的形式传递的
find()无论查询的结果有几个,都会返回一个数组
db.collection.findOne(查询条件);
查询符合条件的第一个文档
findOne()返回的是一个文档对象
查询操作符
$eq
$ne
$lt
$lte
$gt
$gte
$or
...
语法:
{查询操作符:条件}
{字段:{查询操作符:值}}
例子:
{$or:[...]}
{a:{$lt:10}}
db.collection.count()
统计集合中文档的数量
sort()
指定显示结果的排序规则
skip()
跳过指定数量的数据
limit()
限制显示数据的最大数量
相关代码:
use test;
db.stus.find();
//查询name为gzl的文档
db.stus.find({name:"gzl"});
db.stus.find({age:18});
db.stus.find({name:"zlx",age:18});
db.stus.find({});
db.stus.findOne();
//findOne()返回的是对象
db.stus.findOne({age:16});
//find()返回的数组
db.stus.find({name:"gzl"})[0].name;
删除文档
db.collection.remove(查询条件)
该方法用来删除数据库中的指定的文档,这个方法必须传条件
可以删除一个或多个符合条件的文档,默认是所有的
如果希望只删除第一个符合条件的文档,则需要在第二个参数传递一个true
如果传递一个空条件,则会删除集合中的所有文档(慎用),只是清空集合并不会删除集合
db.collection.deleteOne()
删除一个
db.collection.deleteMany()
删除多个
db.collection.drop();
删除集合,如果删除的集合是数据库中的最后一个集合,则会连数据库一起删除
db.dropDatabase();
删除整个数据库
相关代码:
//删除name为gzl的文档
db.stus.remove({name:"gzl"});
db.stus.remove({age:16});
db.stus.remove({age:28},true);
db.stus.remove({});
show collections;
db.stus.drop();
db.sts.drop();
show dbs;
db.stus.insert([
{name:"zlx",isDel:0},
{name:"yxj",isDel:0},
{name:"gzz",isDel:0}
]);
修改文档
db.collection.update(查询条件,新的文档,配置对象);
修改(替换)一个或多个文档
默认情况下,update()会使用新的文档来替换匹配到的文档
如果只希望修改文档中的某个字段,则需要使用 修改操作符 完成
修改操作符:
$inc 修改器$inc可以对文档的某个值为数字型(只能为满足要求的数字)的键进行增减的操作。
$push 向文档的某个数组类型的键添加一个数组元素,不过滤重复的数据。添加时键存在,要求键值类型必须是数组;键不存在,则创建数组类型的键。
$addToSet 给数组类型键值添加一个元素时,避免在数组中产生重复数据
$set 修改文档的指定的属性(字段)
$unset 删除文档的指定的属性(字段)
update方法默认情况下只会修改第一个符合条件文档
如果需要修改多个文档,则需要传递如下的配置对象
{multi:true}
db.collection.updateOne()
修改一个文档
db.collection.updateMany()
修改多个文档
db.collection.replaceOne()
替换一个文档
相关代码:
db.stus.find();
db.stus.update({age:20},{name:"gzl",age:20});
db.stus.update({name:"gzl"},{$set:{age:18}});
db.stus.update({name:"gzl"},{$unset:{age:1}});
db.stus.update({age:18},{$set:{age:28}},{multi:true});
文档间的关系
一对一(one to one)
夫妻
一对一的关系在MongoDB中可以通过内嵌文档来进行映射
一对多/多对一(one to many / many to one)
用户和订单 作者和文章 文章和评论 ......
也可以通过内嵌文档来体现一对多的关系
也可以在"多的一方"中保存"一的一方"的id来映射一对多的关系
多对多 (many to many)
商品和分类 老师和学生