Java中MongoDB文档数组的精确文本匹配

fnvucqvd  于 2023-01-07  发布在  Java
关注(0)|答案(1)|浏览(101)

我尝试使用Java中MongoDB集合上的精确匹配从集合中检索单个文档(第一个)。
藏品如下:

{ "_id": 1, "color": "red", "qty": 5, "vendor": ["Vendor A"] }
{ "_id": 2, "color": "purple", "qty": 10, "vendor": ["Vendor C", "Vendor D"] }
{ "_id": 3, "color": "blue", "qty": 8, "vendor": ["Vendor B", "Vendor A"] }
{ "_id": 4, "color": "white", "qty": 6, "vendor": ["Vendor"] }

我想通过搜索“Vendor”(字符串:keySearch)在供应商标签中:

{ "_id": 4, "color": "white", "qty": 6, "vendor": ["Vendor"] }

但是,我编写的以下代码将返回第一个文档:

Bson filter = Filters.text("\"" + keySearch + "\"");
Document doc = collection.find(filter).first();

我也尝试了下面的方法,但是没有返回任何结果:

Bson elemInArrayMatch = elemMatch("vendor", eq(keySearch));
Document doc = collection.find(elemInArrayMatch).first();

我想在vendor标记上执行精确匹配,也就是说,当keySearch为“Vendor”时,它应该只返回(在本例中)一个文档ID:4.有人能帮帮我吗?

2fjabf4q

2fjabf4q1#

在Java中,您可以执行以下操作:

private static void findExample(DBCollection collection) {
    BasicDBObject Query = new BasicDBObject();
    Query.put("vendor","Vendor");
    DBCursor cursor = collection.find(Query);
    while (cursor.hasNext()) {
        System.out.println(cursor.next());
    }
}

示例来自mongoDB Java文档here

相关问题