- Java锁的逻辑(结合对象头和ObjectMonitor)
- 还在用饼状图?来瞧瞧这些炫酷的百分比可视化新图形(附代码实现)⛵
- 自动注册实体类到EntityFrameworkCore上下文,并适配ABP及ABPVNext
- 基于Sklearn机器学习代码实战
查看mongo可用版本 。
docker search mongo 。
安装指定版本的mogo或者拉取最新版本的镜像 。
docker pull mongo:latest 。
或者官网下载安装包 https://www.mongodb.com/try/download/community-kubernetes-operator 下载完成解压至自己的目录 。
tar -zxvf mongodb-macos-x86_64-4.2.18.tgz 。
创建mongo数据持久化目录 。
sudo mkdir -p /usr/local/var/mongodb 。
创建mongo数据库日志目录 。
sudo mkdir -p /usr/local/var/log/mongodb 。
分配权限 sudo chown my_mongodb_user /usr/local/var/mongodb sudo chown my_mongodb_user /usr/local/var/log/mongodb 运行mongod服务 。
mongod --dbpath /usr/local/var/mongodb --logpath /usr/local/var/log/mongodb/mongo.log --fork 。
查看是否启动成功 。
ps aux | grep -v grep | grep mongod 。
shell操作mongo 。
mongo 。
初次安装,只有几个默认的数据库 。
springboot程序查询mongo可以借助MongoRepository或者MongoTemplate 这里的MongoRepository跟spring data jpa很像,由于继承了CrudRepository或者ListCrudRepository和QueryByExampleExecutor所以基本的增删改查操作都可以直接调用方法来实现 如果使用MongoRepository多字段条件查询时可能会很复杂,使用MongoTemplate查询更为方便,这两者的使用得依靠自己来区分哪种方式更为方便 比如一般的分页以及排序查询MongoRepository更为方便一些 而mongoTemplate只能靠mongoTemplate.query()来实现分页的查询 。
interface PersonRepository extends Repository<Person, Long> {
List<Person> findByEmailAddressAndLastname(EmailAddress emailAddress, String lastname);
// Enables the distinct flag for the query
List<Person> findDistinctPeopleByLastnameOrFirstname(String lastname, String firstname);
List<Person> findPeopleDistinctByLastnameOrFirstname(String lastname, String firstname);
// Enabling ignoring case for an individual property
List<Person> findByLastnameIgnoreCase(String lastname);
// Enabling ignoring case for all suitable properties
List<Person> findByLastnameAndFirstnameAllIgnoreCase(String lastname, String firstname);
// Enabling static ORDER BY for a query
List<Person> findByLastnameOrderByFirstnameAsc(String lastname);
List<Person> findByLastnameOrderByFirstnameDesc(String lastname);
}
解析查询的方法名称分为主语和谓语find…By,exists…By),第二部分形成谓词,可以进一步操作如,find(或其他引入关键字)和By之间的任何文本可认为形容词,除非使用结果限制关键字,如Distinct在要创建的查询上设置不同的标志,如根据用户名去重复(findDistinctByUsername)或者使用Top/First来限制查询结果(findFirstByUsername),排序之后取前3条数据(findTop3ByOrderByCreateTimeDesc)。 Repository中的特殊参数 除了基本类型参数,还可以支持Pageable和 Sort来进行分页和排序 。
Page<User> findByLastname(String lastname, Pageable pageable);
Slice<User> findByLastname(String lastname, Pageable pageable);
List<User> findByLastname(String lastname, Sort sort);
List<User> findByLastname(String lastname, Pageable pageable);
使用Pageable参数来进行分页,使用sort来排序,因为page分页需要根据总数来进行分页计算,判断总共多少页,是否有下一页等等,如果只想分页,不需要知道总共多少页,可使用slice实现,根据属性hasNext判断是否有下一次分页即可,因为计算总页数需要总条数,使用page来接受会额外花费一次count查询 如果只需要排序,可以在方法参数添加sort,可以使用page也可以使用list接受 。
在jpa查询中,如果添加了pageable,但是不想分页查询,可以使用Pageable.unpaged(),如果不想使用排序可以使用Sort.unsorted(),如果传入null值会报NPE 。
定义排序表达式,可以多个条件同时排序 。
Sort sort = Sort.by("firstname").ascending().and(Sort.by("lastname").descending());
lambda条件表达式 。
TypedSort<Person> person = Sort.sort(Person.class);
Sort sort = person.by(Person::getFirstname).ascending().and(person.by(Person::getLastname).descending());
在find...By中间可以使用其他限制词,比如first或者top关键词来限制查询结果的条数,如果只写first或者top,默认为1条,即findByFirst1 = findByFirst = findByTop 。
User findFirstByOrderByLastnameAsc();
User findTopByOrderByAgeDesc();
Page<User> queryFirst10ByLastname(String lastname, Pageable pageable);
Slice<User> findTop3ByLastname(String lastname, Pageable pageable);
List<User> findFirst10ByLastname(String lastname, Sort sort);
List<User> findTop10ByLastname(String lastname, Pageable pageable);
如果是单条查询,如findFirstByOrderByLastnameAsc可以将返回结果使用Optional来包装避免NPE 。
Optional<User> findFirstByOrderByLastnameAsc();
常用关键词 。
关键词 | 描述 |
---|---|
find…By,read…By,get…By,query…By,search…By,stream…By | 一般查询方法通常返回存储库类型 |
exists…By | 是否存在,一般返回boolean| |
count…By | 统计条数| |
delete…By,remove…By | 删除方法,无返回结果(void) |
…First
|
将查询结果限制为结果的第一个
|
…Distinct… | 使用不同的查询仅返回唯一的结果介于find(和其他关键字)和by。 |
最后此篇关于MongoRepository查询数据常用语法的文章就讲到这里了,如果你想了解更多关于MongoRepository查询数据常用语法的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我有一个看起来像这样的文档 @Document public @Data class Note { @Id private String noteId; private Str
我正在尝试为模型“文档”实现一个 QueryDslMongoRepository @QueryEntity @Document(collection="currentDocuments") publi
在尝试将继承与 MongoRepository for C# 结合时,我遇到了序列化错误。 真正奇怪的是它可以在很短的时间内工作,但是在说重建或其他事情之后它就失败了。如果我删除该集合并创建一个新集合
我正在尝试使用 embeddedMongoDb 测试我的 spring 数据 mongodb 存储库,它们是从 MongoRepository 扩展的接口(interface).像这样tutorial
我正在尝试使用 mongo-spring-boot 实现 findAllByUUID,但没有运气。我有什么: public interface CarMatchRepository extends M
我有一个 MongoDB 集合,其中包含具有以下字段的文档: 日期(日期对象) 报价类型(str) 我想使用 MongoRepository 编写一个方法来查找日期范围内的所有文档,并且 OfferT
我正在尝试编写一个函数来更新 mongodb 集合中的某些特定字段,我尝试了 stackoverflow 旧帖子中的一些解决方案,但没有成功,在我添加实现 CollaboratorsRepositor
我使用 SpringBoot、Spring Data 和 MongoRepository 来存储和检索对象。 使用 MongoRepository 时,有没有办法提供自定义 json 反序列化器(最好
我在从 Pageable 排序时遇到问题使用MongoRepository中的地理空间方法 使用以下代码,当 requestVo.page 为 0 时,我能够检索第一个 requestVo.per_p
我正在使用 Spring Boot 1.5.6。特别是,我正在使用 Spring Boot Data MongoDB用于连接 MongoDB。 假设我有这个MongoRepository public
我希望在查询注释中使用 MongoRepository 来使用正则表达式。到目前为止我找到的唯一信息是一个中文帖子,但没有解释它是如何工作的,我不确定是否是我要找的。 @Query("{ 'name'
我正在创建一个 MongoRepository 并且需要创建一个计数查询。有人可以提供一个示例,说明通过 SpringData MongoDB MongoRepository 工具执行此操作的最佳方法
我正在使用 Mongo Repository 与 mongo 数据库对话。 这是我的连接字符串。 然后我像这样使用它: using System; using System.Lin
我有一个 Spring 项目和一个 MongoRepository。 MongoRepository 是一个扩展 MongoRepository 的接口(interface),就像 JPA 一样。 如
我正在使用带有 querydsl 的 mongodb 的 spring-data。我有一个存储库 public interface DocumentRepository extends MongoRe
我在 Mongo 中的文档结构是这样的: db.user.find() { "_id" : ObjectId("560fa46930a8e74be720009a"),
我正在通过 MongoRepository 将 Spring Data 与 MongoDB 一起使用。 我想知道是否可以使用查询注释通过过滤器进行删除。我一直在寻找这里和谷歌,我找不到任何文档。 最佳
我正在使用: org.springframework.data.mongodb.repository.MongoRepository 我从一个空的数据库开始,例如用 _id = 1234 创建一个对象
我的 pojo public class PacketData implements Serializable { private static final long serialVersio
我正在尝试使用自己的查询来查询 mongo 存储库: @Repository public interface LogEntryRepository extends MongoRepository {
我是一名优秀的程序员,十分优秀!