java - 如何查找其数组字段仅包含两个特定值的所有文档

标签 java mongodb

我这样做了,但它返回了其作者字段包含两个特定值和其他值的所有文档。

Document authors = new Document("authors","firstValue")
    .append("authors", "secondValue");

    MongoCursor<Document> cursor = collection.find(authors).iterator();

    try {
        while (cursor.hasNext()) {
            Document doc = cursor.next();
            System.out.println(doc.get("title")+ " " + doc.get("authors"));
        }
    } 
    finally {
        cursor.close();
    }
    client.close();

我只想查找仅包含这两个值的文档。

最佳答案

您将通过将 secondValue 附加到 authors 键来覆盖这些值。因此过滤器看起来像 { "authors": "secondValue"}

因此,如果您需要包含仅包含两个值(包括顺序)的数组的文档,则需要像 { "authors": [ "firstValue", secondaryValue"] }

这样的过滤器

文档作者 = new Document("authors", Arrays.asList("firstValue", "secondValue"));

关于java - 如何查找其数组字段仅包含两个特定值的所有文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43021328/

相关文章:

java - 如何为一个 JTable 设置不同的行高

java - Spring Security 中 Role 和 GrantedAuthority 的区别

java - 在静态方法中访问全局类的全局方法

java - 函数返回 NaN

node.js - 为什么我会收到异常 : login failed while trying to log in to mongodb?

c# - 带有 .net 6 和 BsonDocument 字段类型的 MongoDB

mongodb - Mongo - 更新嵌套数组中的元素

mongodb - 无法将 Robo 3T 连接到远程 MongoDB 服务器

mongodb - grails mongodb不支持isDirty()方法吗

java - 加密,将 OpenSSL 迁移到 JKS