gpt4 book ai didi

Java + Mongo +Morphia - 在 mongo 数组中查找正则表达式

转载 作者:行者123 更新时间:2023-12-01 10:58:01 30 4
gpt4 key购买 nike

我有一个 mongo 查询,如下所示。

db.Course.find( { $and: [{courseCallNo: {$in : [/^ssoapicall1$/i]} }, {clientId :123456 } ] })

在我的java程序中,我使用jmkgreen/morphia作为我的mongo库。我需要使用 java 获得上面的完全匹配。以下是我的代码。请帮我构建这个。谢谢。

PS:我想问题是,我使用的是字符串数组。我需要用正则表达式创建数组。

 String courseCallNoRegex = "/^"+originalCourseCallNo+"$/i";        
List<String> courseCallNoList = new ArrayList<String>();
courseCallNoList.add(courseCallNoRegex);
courseCallNoList.add(courseCallNoRegex);
List<Course> courses= getDataStore().createQuery(Course.class).field(Constants.Course.COURSE_CALL_NO).in(courseCallNoList).field(Constants.Course.CLIENT_ID).equal(clientId).asList();

最佳答案

  1. jmkgreen fork 真的很旧。我肯定会尝试使用官方 MongoDB Morphia 版本,其中包含大量错误修复和新功能。

  2. 这...会...慢...
    除非 Collection 真的很小,否则你很快就会感受到这种痛苦。如果您无法标准化数据(在其上的 .toLowerCase() 中调用 @PrePersist ),我会将数据复制为类似 courseCallNoNormalized 的数据。 。因此,您可以使用精确匹配,最好使用索引。

  3. 您是否尝试过以下操作?

    Pattern regexp =
    Pattern.compile("^" + originalCourseCallNo + "$", Pattern.CASE_INSENSITIVE);
    mongoDatastore.find(Course.class)
    .field(Constants.Course.CLIENT_ID).equal(clientId)
    .filter(Constants.Course.COURSE_CALL_NO, regexp).asList();

关于Java + Mongo +Morphia - 在 mongo 数组中查找正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33515494/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com