mongodb命令springdata

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

API文档:https://docs.spring.io/spring-data/mongodb/docs/current/api/org/springframework/data/mongodb/core/MongoTemplate.html

一个简单的例子:

@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

查询对象定义一个查询的所有要素,其中包括筛选条件、排序、起始行、返回条数等内容

API文档:https://docs.spring.io/spring-data/mongodb/docs/current/api/org/springframework/data/mongodb/core/query/Query.html

常用方法介绍:

|

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。

API文档:https://docs.spring.io/spring-data/mongodb/docs/current/api/org/springframework/data/mongodb/core/query/Criteria.html

常用方法介绍:

| [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

查询排序类,使用此类可以创建查询排序。

API文档:https://docs.spring.io/spring-data/commons/docs/current/api/org/springframework/data/domain/Sort.html?is-external=true

常用方法介绍:

| [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为页面封装类。

API文档:https://docs.spring.io/spring-data/commons/docs/current/api/org/springframework/data/domain/PageRequest.html

           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 }) #删除了两条数据

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,905评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,140评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,791评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,483评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,476评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,516评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,905评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,560评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,778评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,557评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,635评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,338评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,925评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,898评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,142评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,818评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,347评论 2 342

推荐阅读更多精彩内容

  • 成功启动MongoDB后,再打开一个命令行窗口输入mongo,就可以进行数据库的一些操作。输入help可以看到基本...
    精气神贯通阅读 458评论 0 0
  • MONGODB基本命令成功启动MongoDB后,再打开一个命令行窗口输入mongo,就可以进行数据库的一些操作。输...
    骑着蜗牛去遛狗阅读 288评论 0 0
  • //创建用户名密码use admin use dbNamedb.collectionName.find / db....
    7c3b293d3b97阅读 392评论 0 1
  • Mongodb启动 配置mongodb启动配置文件 连接mongodb服务器 mongod -f conf/mon...
    Herman7z阅读 764评论 0 1
  • 为了方便查阅,这里将MongoDB常用命令进行了整理 登陆和退出 mongo命令行直接加 MongoDB服务的IP...
    河东客阅读 8,833评论 3 2