springdata查询
https://blog.csdn.net/weixin_39729846/article/details/82626721
加载包
在pom文件中加入spring-boot-starter-data-mongodb配置
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
配置参数
# user - 用户名、secret - 密码、mongo1.example.com - 数据库地址、27017- 端口号、teat - 库名
spring.data.mongodb.uri=mongodb://user:secret@mongo1.example.com:27017/test
实体映射
我们可以通过实体类来进行关系映射,从而能够方便的使用对象进行数据操作。
Spring Data MongoDB提供了一些方便的映射注释供我们使用,下面列出官方说明地址以供参考
官方说明文档:https://docs.spring.io/spring-data/mongodb/docs/2.1.3.RELEASE/reference/html/#mapping-usage
@Id:用于标记id字段,没有标记此字段的实体也会自动生成id字段,但是我们无法通过实体来获取id。id建议使用ObjectId类型来创建。
@Document:用于标记此实体类是mongodb集合映射类。可以使用collection参数指定集合名称。特别需要注意的是如果实体类没有为任何字段创建索引将不会自动创建集合。
@Indexed:用于标记为某一字段创建索引。direction参数可以指定排序方向,升或降序。
@CompoundIndex:用于创建复合索引。def参数可以定义复合索引的字段及排序方向。
@Transient:被该注解标注的,将不会被录入到数据库中。只作为普通的javaBean属性。
@PersistenceConstructor:用于声明构造函数,作用是把从数据库取出的数据实例化为对象。
@Field:用于指定某一个字段映射到数据库中的名称。
@DBRef:用于指定与其他集合的级联关系,但是需要注意的是并不会自动创建级联集合。
一个简单的例子:
//注释此类将被映射到数据库的一个集合(collection为集合名称)
@Document(collection = "ex_entity_test")
//创建联合索引
@CompoundIndexes({
//联合索引 name 索引名称 、def 索引字段、parameter1升序、parameter3降序
@CompoundIndex(name = "compound_index", def = "{'parameter1': 1, 'parameter3': -1}")
})
public class EntityTest implements Serializable {
//标记id字段
@Id
private ObjectId id;
//创建单字段索引(默认ASCENDING 升序、DESCENDING 降序)
@Indexed(direction = DESCENDING)
private Long parameter1;
//修改映射到数据库中的名称
@Field("parameter2_")
private String parameter2;
private Date parameter3;
private Integer parameter4;
//关联其他集合(不添加此注释时List将会保存具体的实体值,而添加了此注释List保存的是关联集合的id)
@DBRef
private List<EntityTest1> parameter5;
//此字段不映射到数据库
@Transient
private Integer parameter6;
public EntityTest(){
}
//声明构造函数,用于实例化查询结果数据
@PersistenceConstructor
public EntityTest(Long parameter1, String parameter2, Date parameter3, Integer parameter4, List<EntityTest1> parameter5) {
this.parameter1 = parameter1;
this.parameter2 = parameter2;
this.parameter3 = parameter3;
this.parameter4 = parameter4;
this.parameter5 = parameter5;
}
public ObjectId getId() {
return id;
}
public void setId(ObjectId id) {
this.id = id;
}
......
public Integer getParameter6() {
return parameter6;
}
public void setParameter6(Integer parameter6) {
this.parameter6 = parameter6;
}
}
上例关联的集合
//注释此类将被映射到数据库的一个集合(collection为集合名称)
@Document(collection = "ex_entity_test1")
public class EntityTest1 implements Serializable {
//标记id字段
@Id
private ObjectId id;
//如果实体类没有为任何字段创建索引将不会自动创建集合
@Indexed
private Long parameter1;
public EntityTest1(){
}
public EntityTest1(Long parameter1) {
this.parameter1 = parameter1;
}
public ObjectId getId() {
return id;
}
public void setId(ObjectId id) {
this.id = id;
}
public Long getParameter1() {
return parameter1;
}
public void setParameter1(Long parameter1) {
this.parameter1 = parameter1;
}
}
数据操作
当完成一系列的配置与准备工作后,我们就可以使用MongoTemplate来操作数据库了。
MongoTemplate为我们提供了全面的增删改查等操作数据库的方法,详情可查看官方说明文档和API文档
官方说明文档:https://docs.spring.io/spring-data/mongodb/docs/2.1.3.RELEASE/reference/html/#mongo-template
一个简单的例子:
@Controller
public class MongoController {
@Autowired
private MongoTemplate mongoTemplate;
@GetMapping(value = "/")
public String index(){
return "redirect:/find";
}
//新增文档
@GetMapping(value = "/insert")
public String insert(){
//insert方法并不提供级联类的保存,所以级联类需要先自己先保存
EntityTest1 entityTest1_1 = new EntityTest1(1000L);
//执行完insert后对象entityTest1将会获得保存后的id
mongoTemplate.insert(entityTest1_1);
//再添加一条
EntityTest1 entityTest1_2 = new EntityTest1(1001L);
mongoTemplate.insert(entityTest1_2);
//创建列表并将保存后的关联对象添加进去
ArrayList<EntityTest1> entityTest1List = new ArrayList<EntityTest1>();
entityTest1List.add(entityTest1_1);
entityTest1List.add(entityTest1_2);
//新增主体对象
EntityTest entityTest = new EntityTest(100L,"test",new Date(),10,entityTest1List);
//新增数据的主键已经存在,则会抛DuplicateKeyException异常
mongoTemplate.insert(entityTest);
return "redirect:/find";
}
//保存文档
//保存与新增的主要区别在于,如果主键已经存在,新增抛出异常,保存修改数据
@GetMapping(value = "/save")
public String save(){
//查询最后一条数据并更新
Sort sort = new Sort(Sort.Direction.DESC,"parameter3");
EntityTest entityTest = mongoTemplate.findOne(Query.query(Criteria.where("")).with(sort),EntityTest.class);
entityTest.setParameter4(3000);
//保存数据的主键已经存在,则会对已经存在的数据修改
mongoTemplate.save(entityTest);
return "redirect:/find";
}
//删除文档
@GetMapping(value = "/delete")
public String delete(){
//查询第一条数据并删除
EntityTest entityTest = mongoTemplate.findOne(Query.query(Criteria.where("")),EntityTest.class);
//remove方法不支持级联删除所以要单独删除子数据
List<EntityTest1> entityTest1List = entityTest.getParameter5();
for(EntityTest1 entityTest1:entityTest1List){
mongoTemplate.remove(entityTest1);
}
//删除主数据
mongoTemplate.remove(entityTest);
return "redirect:/find";
}
//更新文档
@GetMapping(value = "/update")
public String update(){
//将查询条件符合的全部文档更新
Query query = new Query();
Update update = Update.update("parameter2_","update");
mongoTemplate.updateMulti(query,update,EntityTest.class);
return "redirect:/find";
}
//查询文档
@GetMapping(value = "/find")
public String find(Model model){
//查询小于当前时间的数据,并按时间倒序排列
Sort sort = new Sort(Sort.Direction.DESC,"parameter3");
List<EntityTest> findTestList = mongoTemplate.find(Query.query(Criteria.where("parameter3").lt(new Date())).with(sort) ,EntityTest.class);
model.addAttribute("findTestList",findTestList);
//使用findOne查询如果结果极为多条,则返回排序在最上面的一条
EntityTest findOneTest = mongoTemplate.findOne(Query.query(Criteria.where("parameter3").lt(new Date())).with(sort) ,EntityTest.class);
model.addAttribute("findOneTest",findOneTest);
//模糊查询
List<EntityTest> findTestList1 = mongoTemplate.find(Query.query(Criteria.where("parameter3").lt(new Date()).and("parameter2").regex("es")) ,EntityTest.class);
model.addAttribute("findTestList1",findTestList1);
//分页查询(每页3行第2页)
Pageable pageable = new PageRequest(1,3,sort);
List<EntityTest> findTestList2 = mongoTemplate.find(Query.query(Criteria.where("parameter3").lt(new Date())).with(pageable) ,EntityTest.class);
//共多少条
Long count = mongoTemplate.count(Query.query(Criteria.where("parameter3").lt(new Date())),EntityTest.class);
//返回分页对象
Page<EntityTest> page = new PageImpl<EntityTest>(findTestList2,pageable,count);
model.addAttribute("page",page);
//分页查询(通过起始行和数量也可以自己实现分页逻辑)
List<EntityTest> findTestList3 = mongoTemplate.find(Query.query(Criteria.where("parameter3").lt(new Date())).with(sort).skip(3).limit(3) ,EntityTest.class);
model.addAttribute("findTestList3",findTestList3);
return "/index";
}
}
查询
由于查询相对于其他增删改的操作要复杂一些,所以在这里单独说一下查询。还看上面的例子就可以。
首先我们先介绍一下几个和查询有关的类Query、Criteria、Sort、PageRequest、PageImpl
Query
查询对象定义一个查询的所有要素,其中包括筛选条件、排序、起始行、返回条数等内容
常用方法介绍:
|
query(CriteriaDefinition criteriaDefinition)
|
静态方法通过注入一个CriteriaDefinition条件对象获得Query查询对象。在简单查询时使用此方法将非常的方便。
例如:mongoTemplate.find(Query.query(Criteria.where("parameter3").lt(new Date())
|
|
addCriteria(CriteriaDefinition criteriaDefinition)
| 添加一个CriteriaDefinition查询条件类到本次查询 |
|
skip(long skip)
|
跳过文档的数量,可以与limit配合使用实现分页效果。
|
|
limit(int limit)
|
查询返回的文档数量。
|
|
with(Sort sort)
|
添加一个Sort排序对象
|
|
with(Pageable pageable)
| 添加一个Pageable分页对象。Pageable可以注入一个Sort,所以分页和排序可以一起添加。
例如:Pageable pageable = new PageRequest(1,3,sort); |
Criteria
查询条件类,使用此类定义查询时的查询条件相当于SQL的where。
常用方法介绍:
| [where](https://docs.spring.io/spring-data/mongodb/docs/current/api/org/springframework/data/mongodb/core/query/Criteria.html#where-java.lang.String-)([String](https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true) key)
|
静态方法,用它可以很方便的定义查询条件
例如:mongoTemplate.find(Query.query(Criteria.where("parameter3").lt(new Date()).and("parameter2").regex("es"))
|
| [and](https://docs.spring.io/spring-data/mongodb/docs/current/api/org/springframework/data/mongodb/core/query/Criteria.html#and-java.lang.String-)([String](https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true) key)
| 与操作 |
| [gt](https://docs.spring.io/spring-data/mongodb/docs/current/api/org/springframework/data/mongodb/core/query/Criteria.html#gt-java.lang.Object-)([Object](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true) o)
| 大于 |
| [gte](https://docs.spring.io/spring-data/mongodb/docs/current/api/org/springframework/data/mongodb/core/query/Criteria.html#gte-java.lang.Object-)([Object](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true) o)
| 大于等于 |
| [in](https://docs.spring.io/spring-data/mongodb/docs/current/api/org/springframework/data/mongodb/core/query/Criteria.html#in-java.lang.Object...-)([Object](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true)... o)
| 包含 |
| [is](https://docs.spring.io/spring-data/mongodb/docs/current/api/org/springframework/data/mongodb/core/query/Criteria.html#is-java.lang.Object-)([Object](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true) o)
| 等于 |
| [lt](https://docs.spring.io/spring-data/mongodb/docs/current/api/org/springframework/data/mongodb/core/query/Criteria.html#lt-java.lang.Object-)([Object](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true) o)
| 小于 |
| [lte](https://docs.spring.io/spring-data/mongodb/docs/current/api/org/springframework/data/mongodb/core/query/Criteria.html#lte-java.lang.Object-)([Object](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true) o)
| 小于等于 |
| [not](https://docs.spring.io/spring-data/mongodb/docs/current/api/org/springframework/data/mongodb/core/query/Criteria.html#not--)()
| 非 |
| [regex](https://docs.spring.io/spring-data/mongodb/docs/current/api/org/springframework/data/mongodb/core/query/Criteria.html#regex-java.lang.String-)([String](https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true) re)
| 正则表达式 |
| [andOperator](https://docs.spring.io/spring-data/mongodb/docs/current/api/org/springframework/data/mongodb/core/query/Criteria.html#andOperator-org.springframework.data.mongodb.core.query.Criteria...-)([Criteria](https://docs.spring.io/spring-data/mongodb/docs/current/api/org/springframework/data/mongodb/core/query/Criteria.html)... criteria)
| 创建与操作 |
| [orOperator](https://docs.spring.io/spring-data/mongodb/docs/current/api/org/springframework/data/mongodb/core/query/Criteria.html#orOperator-org.springframework.data.mongodb.core.query.Criteria...-)([Criteria](https://docs.spring.io/spring-data/mongodb/docs/current/api/org/springframework/data/mongodb/core/query/Criteria.html)... criteria)
| 创建或操作 |
Sort
查询排序类,使用此类可以创建查询排序。
常用方法介绍:
| [Sort](https://docs.spring.io/spring-data/commons/docs/current/api/org/springframework/data/domain/Sort.html#Sort-org.springframework.data.domain.Sort.Direction-java.lang.String...-)([Sort.Direction](https://docs.spring.io/spring-data/commons/docs/current/api/org/springframework/data/domain/Sort.Direction.html) direction,[String](https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true)... properties)
| 构造方法创建一个排序。direction为排序方向的枚举类型,properties为排序字段数组
|
| [and](https://docs.spring.io/spring-data/commons/docs/current/api/org/springframework/data/domain/Sort.html#and-org.springframework.data.domain.Sort-)([Sort](https://docs.spring.io/spring-data/commons/docs/current/api/org/springframework/data/domain/Sort.html) sort)
| 多个排序条件链接 |
| [ascending](https://docs.spring.io/spring-data/commons/docs/current/api/org/springframework/data/domain/Sort.html#ascending--)()
| 返回升序排列对象 |
| [descending](https://docs.spring.io/spring-data/commons/docs/current/api/org/springframework/data/domain/Sort.html#descending--)()
| 返回降序排列对象 |
PageRequest和PageImpl
这两个类都是分页相关的封装类,与其他数据库的使用方法一样。PageRequest分页请求类,PageImpl为页面封装类。
https://docs.spring.io/spring-data/commons/docs/current/api/org/springframework/data/domain/PageImpl.html
--------------------------------------------------
导入数据
在终端输入导入命令:
mongoimport --db dbName --collection collectionName --file filePath
实际具体命令:
mongoimport --db mall --collection userData --file /Users/yeo/Desktop/userdata.json
数据库命令
查看当前的数据库:
db
查看所有的数据库:
show dbs /show databases
切换数据库:
use db_name
删除当前的数据库:
db.dropDatabase()
切换到没有的数据库, 添加数据会自动创建
显示当前数据库状态:
db.stats()
当前数据库版本:
db.version()
查看当前数据库的链接机器地址:
db.getMongo()
集合命令
---向不存在的集合中第⼀次加⼊数据时, 集合会被创建出来
创建集合
db.createCollection("stu")
查看集合:
show collections
删除集合:
db.集合名称.drop()
重命名
db.hello.renameCollection("hl")
创建索引
在HELLO集合上,建立对Name字段的索引,1代表正序
db.HELLO.ensureIndex({NAME:1})
增删改查命令
向user集合插入
数据
db.user.insert({'name':'GalGadot', 'gender':'female','age':28,'salary':11000}) db.user.insert({'name':'Mikie Hara','gender':'female','age':26,'salary':7000})
也可以使用save插入
db.user.save({'name':'Wentworth Earl Miller','gender':'male','age':41,'salary':33000})
修改数据
修改数据
db.collectionName.update(query,update,upsert,multi)
功能:修改一个文档
参数:query:筛选要修改的文档 相当于where子句,用法同查找
update:将数据更新为什么内容相当于set操作,需要使用修改器操作符
upsert:bool值,默认为false,表示如果query的文档不存在则无法修改
如果设置为true表示如果query的文档不存在则根据query和update参数插入新的文档
multi:bool值,默认false 如果有多条符合筛选条件的文档,则只修改第一条,
如果设置为true则修改所有符合条件的文档
例子
例子:将阿红年龄改为24
db.class0.update({name:'阿红'},{$set:{age:24}})
例子:不存在name:‘阿丽’,这个文档,会插入这条文档
db.class0.update({name:'阿丽'},{$set:{age:18,sex:'w'}},true)
例子:将所有年龄大于20的改为18,但是第四个参数为false,所以只修改了第一条
db.class0.update({age:{$gt:20}},{$set:{age:18}})
例子:将所有年龄大于20的改为18
db.class0.update({age:{$gt:20}},{$set:{age:18}},false,true)
语法
修改器操作符
$set
修改一个域的值
增加一个域
db.class0.update({name:'阿红'},{$set:{sex:'w'}})
$unset
删除一个域
例子:将阿丽的性别和年龄删掉,(后面数字习惯写1或者0,写其他数字也可以,都表示删除)
db.class0.update({name:'阿丽'},{$unset:{sex:0,age:0}})
$rename
修改一个域的名称
例子:修改所有的sex域为gender
db.class0.update({},{$rename:{sex:'gender'}},false,true)
$setOnInsert
如果update操作插入新的文档,则补充插入内容
例子:如果插入数据则同时插入sex和tel域内容
db.class0.update({name:'阿华'},{$set:{age:21},$setOnInsert:{sex:'m',tel:'12222345'}},true)
$inc
加减修改器
例子:将所有年纪小于18岁的加1
db.class0.update({age:{$lt:18}},{$inc:{age:1}},false,true)
*inc 可加正数 负数 小数都可以
$mul
乘法修改器
例子:将阿华的年龄乘以2
db.class0.update({name:'阿华'},{$mul:{age:2}})
*$mul 可乘以正数 负数 小数都可以
$min
设定最小值 : 如果筛选的文档指定的域值小于min值则不修改,如果大于min值则改为min值
e.g.
db.class0.update({},{$min:{age:19}},false,true)
$max
设置最大值 : 如果筛选的文档指定至于大于max值则不变,如果小于max值则修改为max值
e.g.
db.class0.update({},{$max:{age:20}},false,true)
数组修改器
$push 向数组中添加一项
e.g.
db.class1.update({name:"Abby"},{$push:{score:30}})
$pushAll 向数组中添加多项
e.g.
db.class1.update({name:"Jame"},{$pushAll:{score:[10,20]}})
$each 逐个操作
例子:利用each添加多项
db.class1.update({name:'Lily'},{$push:{score:{$each:[10,5]}}})
$position
选择数组位置进行操作,必须和each合用
例子:
db.class1.update({name:'Lucy'},{$push:{score:{$each:[10,10],$position:1}}})
$sort
对数组进行排序,必须和each合用
db.class1.update({name:'Lucy'},{$push:{score:{$each:[],$sort:1}}})
$pull 从数组中删除一个元素
例子:删除Lily的5分
db.class1.update({name:'Lily'},{$pull:{score:5}})
$pullAll
从数组中删除多个元素
db.class1.update({name:'Jame'},{$pullAll:{score:[10,20]}})
$pop
弹出数组中的一项(只能弹出第一项或者最后一项)
-1表示第一项,1表示最后一项
例子:
db.class1.update({name:'Lily'},{$pop:{score:-1}})
$addToset
向数组中插入一个元素,但该元素不能和其他元素重复
db.class1.update({name:'Lily'},{$addToSet:{score:45}})
数组中已经有45,不会再插入
————————————————
版权声明:本文为CSDN博主「Wu177」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qulang4358/article/details/94964733
查询命令
-----------------------------------------------
Exact Equal
> db.user.find({"age":26})
{ "_id" : ObjectId("5ce4f4d03e7e1703c34ec0d2"), "name" : "Mikie Hara", "gender" : "female", "age" : 26, "salary" : 7000 }
-----------------------------------------------
Great Than
> db.user.find({salary:{$gt:7000}})
{ "_id" : ObjectId("5ce4f4c33e7e1703c34ec0d1"), "name" : "Gal Gadot", "gender" : "female", "age" : 28, "salary" : 11000 }
{ "_id" : ObjectId("5ce4f4dc3e7e1703c34ec0d3"), "name" : "Wentworth Earl Miller", "gender" : "male", "age" : 41, "salary" : 33000 }
-----------------------------------------------
Fuzzy Match
查看名称中包含‘a’的数据
> db.user.find({name:/a/})
{ "_id" : ObjectId("5ce4f4c33e7e1703c34ec0d1"), "name" : "Gal Gadot", "gender" : "female", "age" : 28, "salary" : 11000 }
{ "_id" : ObjectId("5ce4f4d03e7e1703c34ec0d2"), "name" : "Mikie Hara", "gender" : "female", "age" : 26, "salary" : 7000 }
{ "_id" : ObjectId("5ce4f4dc3e7e1703c34ec0d3"), "name" : "Wentworth Earl Miller", "gender" : "male","age" : 41, "salary" : 33000 }
-----------------------------------------------
查询name以W打头的数据
> db.user.find({name:/^W/})
{ "_id" : ObjectId("5ce4f4dc3e7e1703c34ec0d3"), "name" : "Wentworth Earl Miller", "gender" : "male","age" : 41, "salary" : 33000 }
-----------------------------------------------
多条件“与”
查询age小于30,salary大于6000的数据
> db.user.find({age:{$lt:30},salary:{$gt:6000}})
{ "_id" : ObjectId("5ce4f4c33e7e1703c34ec0d1"), "name" : "Gal Gadot", "gender" : "female", "age" : 28, "salary" : 11000 }
{ "_id" : ObjectId("5ce4f4d03e7e1703c34ec0d2"), "name" : "Mikie Hara", "gender" : "female", "age" : 26, "salary" : 7000 }
-----------------------------------------------
多条件“或”
查询age小于25,或者salary大于10000的记录
> db.user.find({$or:[{salary:{$gt:10000}},{age:{$lt:25}}]})
{ "_id" : ObjectId("5ce4f4c33e7e1703c34ec0d1"), "name" : "Gal Gadot", "gender" : "female", "age" : 28, "salary" : 11000 }
{ "_id" : ObjectId("5ce4f4dc3e7e1703c34ec0d3"), "name" : "Wentworth Earl Miller", "gender" : "male"
-----------------------------------------------
查询指定列
db.user.find({},{name:1,age:1,salary:1,sex_orientation:true})
{ "_id" : ObjectId("5ce4f4c33e7e1703c34ec0d1"), "name" : "Gal Gadot", "age" : 28, "salary" : 11000 } { "_id" : ObjectId("5ce4f4d03e7e1703c34ec0d2"), "name" : "Mikie Hara", "age" : 26, "salary" : 7000 } { "_id" : ObjectId("5ce4f4dc3e7e1703c34ec0d3"), "name" : "Wentworth Earl Miller", "age" : 41, "salary" : 33000 }
这里的1表示显示此列的意思,也可以用true表示。
1 . 查询所有
db.getCollection('CollectionName').find()
2.根据条件查询
db.getCollection('CollectionName').find({"userId":37761});
3.多条件查询
db.getCollection('CollectionName').find({"userId":1},{"customerId":61});
4.根据时间戳范围查询
db.getCollection('CollectionName').find({"userId":61},{"timestamp":{"$gt":1540449300000,"$lte":1540550100000}})
5.条件查排序并分页:1.是升序, -1是降序
db.getCollection('CollectionName').find({"userId":361}).sort({"time":-1}).limit(100);
6.使用$and多条件查询
db.getCollection('CollectionName').find( {$and:[{"userId":37761},{"domain":"time.com"},{"timestamp":{"$gt":1540483200000,"$lte":1540550100000}}]});
mongodb中对应的范围标识符:
"$lt"===================> "<"
"$lte"==================> "<="
"$gt"===================> ">"
"$gte"==================> ">="
"$ne"===================> "!="
7.ISOdate时间范围查询
db.getCollection('CollectionName').find({ "timestamp" : { "$gte" : ISODate("2018-04-20T00:00:00Z")
, "$lt" : ISODate("2018-04-21T00:00:00Z") }});
8.插入:
db.CollectionName.insert({"url":"www.baidu.com"});
删除数据
接下来移除 title 为“MongoDB”的文档,执行以下操作后,查询会发现两个文档记录均被删除:
db.test.remove({'title': 'MongoDB'})
WriteResult({ 'nRemoved' : 2 }) #删除了两条数据