java - 如何从java集合中的java对象访问变量?

标签 java mongodb mongodb-query mongo-java

我正在使用 Mongo Java 驱动程序,并且我尝试在 collection.find() 函数上使用过滤器。例如,当我有一个 java 对象的键时,它的类包含某些字段:

Document document = (Document) collection.find(and(
    eq("m_seniority", key.getM_seniority()),
    eq("m_currency",key.getM_currency()),
    eq("m_redCode",key.getM_redCode()),
    eq("m_companyId",key.getM_companyId())
)).first();

我使用上面的命令。但是当我想批量执行此操作时,我将传递一个键集合(Collection keys),我无法访问内部java对象的特定变量,如下所示:

List<Document> docs =  (List<Document>) collection.find(and(
    eq("m_seniority", keys.getM_seniority()),
    eq("m_currency",keys.getM_currency()),
    eq("m_redCode",keys.getM_redCode()),
    eq("m_companyId",keys.getM_companyId())
)).into(new ArrayList<Document>());

因为 getter 不是集合的,而只是对象的,所以我不能在集合上使用 getter。我该怎么做?

最佳答案

要对所有集合键创建查询:

List<Bson> keyFilters = new ArrayList<>();
// for each key create an 'and' filter on seniority, currency, redcode and companyid
for (Key key : keys) {        
    keyFilters.add(
        Filters.and(eq("m_seniority", key.getM_seniority()),
            Filters.eq("m_currency",key.getM_currency()),
            Filters.eq("m_redCode",key.getM_redCode()),
            Filters.eq("m_companyId",key.getM_companyId())
        )
    );
}

List<Document> docs =  (List<Document>) collection.find(
        // 'or' all of the individual key filters
        Filters.or(keyFilters)
).into(new ArrayList<Document>());

关于java - 如何从java集合中的java对象访问变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47791841/

相关文章:

java - Google App Engine 上的 Apache Tika 文本提取

java - 无法连接 red5 中的 hls 插件

Python MongoDB (PyMongo) 多重处理游标

mongodb - SpringData MongoDB 错误和条件查询,其中同一字段出现两次

mongodb用户认证

java.lang.NullPointerException : error - app is not opening 异常

java - 为 ACTION_SHOW 传递两个数据模式 Intent

django - 使用 MongoEngine 查询 ReferenceFields

java - 带有 Java 异步驱动程序的 MongoDB : $lookup always empty

30 亿文档的 Mongodb 不同聚合