当前位置: 首页 > 知识库问答 >
问题:

查询mongoRepository列表

洪俊能
2023-03-14

我有一个MongoDB集合,其中包含以下字段的文档:

  • 日期(日期obj)

我想用MongoRepository编写一个方法来查找日期在一系列日期中的所有文档,并且offerType包含列表中提供的字符串之一

文件:

  1. 日期:2019年4月10日,报价类型:报价1

我想要:

  • 日期在9-04-2019和12-04-2019之间
  • 以下优惠:Offer1、offer3

在上一个示例中,我将获得文档1和2。

我使用MongoRepository和一个自定义对象,其中包含我需要的字段:

import java.util.Date;
import java.util.List;

import org.springframework.data.domain.Pageable;
import org.springframework.data.mongodb.repository.MongoRepository;     
public interface ReportVocalOrderRepository extends MongoRepository<ReportVocalOrder, String> {

    List<ReportVocalOrder> findByDateBetween(Date startDate, Date endDate, Pageable pageable);

    List<ReportVocalOrder> findByDateBetweenAndOfferTypeContaining(Date startDate, Date endDate, List<String> offers, Pageable pageable);


}

这是文档类:

@JsonInclude(Include.NON_NULL)
@Document(collection = Constants.Mongo.Collections.VOCAL_ORDER_REPORT)
@ApiModel
public class ReportVocalOrder {

    @Id
    private String id;

    private Date date;
private String offerType;
public Date getDate() {
        return date;
    }

    public void setDate(Date date) {
        this.date = date;
    }
public String getOfferType() {
        return offerType;
    }

    public void setOfferType(String offerType) {
        this.offerType = offerType;
    }
}

MongoRepository的第一种方法很好;第二个函数返回一个空列表
问题是查询mongoRepository以搜索可以包含作为参数传递的列表值之一的字段
此实现有什么问题?有更好的方法实现此查询吗?

共有2个答案

宇文念
2023-03-14

我们有另一个使用查询的选项

@Query(value = "{ 'groupId' :  ?0 , 'user.$id' : {$in: ?1} }", delete = true)
    List<GroupUser> deleteUserInGroup(String groupId, List<ObjectId> userId);

你可以试试看。

景高杰
2023-03-14

这比我想象的要简单。我为感兴趣的人发布了一个答案:

import java.util.Date;
import java.util.List;

import org.springframework.data.domain.Pageable;
import org.springframework.data.mongodb.repository.MongoRepository;     
public interface ReportVocalOrderRepository extends MongoRepository<ReportVocalOrder, String> {

    List<ReportVocalOrder> findByDateBetweenAndOfferTypeIn(Date startDate, Date endDate, List<String> offers, Pageable pageable);


}

所以重点是使用关键字In

 类似资料:
  • 我正在尝试使用对mongo存储库进行自己的查询: 我想实现的是使用关键字搜索日期日志。上面抱怨了一个解析错误: 如果我将ISODate(?0)替换为简单的它生成包含未知实例的第1页,共0页 字符串 我怎么才能把我的约会对象弄进去?

  • 我在GET api中有多个查询参数(如姓名、年龄、性别、位置等…n个数字)。现在我需要使用这些查询值来查询我的mongo数据库。现在用户可以发送从0到n的查询参数。 我正在尝试使用类似的东西 或者 但问题是,考虑到用户可以发送的所有排列和组合,我将不得不编写多个查询。有没有更好的方法来做到这一点?

  • 我无法在Spring Data MongoDB中将值初始化为false,因此在我的查询中,我想搜索字段设置为false或null的文档。 以下片段似乎不起作用:

  • 通常用于App中展示当前用户的历史咨询列表,比如消息盒子的展示: 一、咨询列表说明: 1、获取所有咨询入口的最后一条消息的总和,以接待组settingid为维度; 2、能区分该条消息的状态(已读、未读以及未读数); 3、返回的数据是按照最后一条消息的时间对咨询列表倒序排序。 二、API接口 方法一:+ (NSArray *)ntalker_getConsultHistoryListCount:(N

  • 问题内容: 我正在使用MongoRepository将Spring Data与MongoDB结合使用。 我想知道是否有可能使用查询注释通过过滤器进行删除。我一直在这里和谷歌,我找不到任何文档。 问题答案:

  • 它可以工作,但我想知道它访问mongo的确切查询 怎么做? 我尝试在以下属性中添加一些配置: 也不工作。 有人能帮忙吗?