【问题标题】:Multiple criteria orOperator using mongotemplate使用 mongotemplate 的多个条件或运算符
【发布时间】:2021-10-27 00:59:53
【问题描述】:

我用 2 个输入制作了一个过滤器。 阵列状态 APPROVE 或 APPROVE 的第一个输入。第二个输入是基于 sku 或标题或描述的文本。我使用这个查询。如果我在邮递员中传递参数,则第一个输入数组状态正在工作。但如果我也通过第二个输入文本是错误的 “由于 com.mongodb.BasicDocument 的限制,您不能添加第二个 'null' 条件。查询已经包含 '{ "$or" : [{ "status" : "UNAPPROVE" }, { "status" : "批准" }] }'"

Query query = new Query().with(pageable);
        
if (searchCriteria.getStatus() != null) {

    if (searchCriteria.getStatus().length == 1) {                    
        query.addCriteria(Criteria.where("status").is(searchCriteria.getStatus()[0]));
    } else {
        query.addCriteria(new Criteria().orOperator(
            Criteria.where("status").is(searchCriteria.getStatus()[0]),
            Criteria.where("status").is(searchCriteria.getStatus()[1])));
    }
}
    
if (searchCriteria.getText() != null) {
    
    query.addCriteria( new Criteria()
        .orOperator(
            Criteria.where("title").regex(searchCriteria.getText(), "i"),
            Criteria.where("description").regex(searchCriteria.getText(), "i"),
            Criteria.where("item.sku").is(searchCriteria.getText())
        ));
}

【问题讨论】:

  • 你能告诉我们你如何发送第一个和第二个请求吗?
  • 是的,我编辑了帖子并添加了图片发送请求
  • 为什么要发送两个状态?
  • 状态 Ulasan(状态)是数组。你可以看到我刚刚添加的前端请求。
  • 这个答案对你有帮助吗?

标签: mongodb spring-boot mongotemplate


【解决方案1】:

您不能对两个字段都使用Or,您需要使用In。 比如query.addCriteria(Criteria.where("status").in(<YOUR_ARRAY>))

【讨论】:

    猜你喜欢
    • 2023-03-10
    • 1970-01-01
    • 2012-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-14
    • 2011-06-26
    • 1970-01-01
    相关资源
    最近更新 更多