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

时间:2017-03-25 20:03:17

标签: 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();

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

1 个答案:

答案 0 :(得分:1)

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

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

这样的过滤器的顺序

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