如何在MongoDB中搜索数组值

时间:2016-12-13 07:29:23

标签: java mongodb

我的收藏如下

{
    "_id" : NumberLong(366),
    "_class" : "com.cts.adpart.domain.DBData",
    "file" : "xyz",
    "sample" : [
                   "a",
                   "b",
                   "c"
             ]
}

我想根据列表值搜索示例数组 假设现在 1.我的List有值“a”,“c”然后我想要返回上面的文件,但是, 2.如果我的列表包含“a”,“d”它不应该返回上面的文档。

我尝试了以下代码,但即使找到一个匹配项,也会将文档返回给我。

List<String> sampleList = new ArrayList<String>();
sampleList.add("a");
sampleList.add("d");

query.addCriteria(Criteria.where("sample").in(sampleList));

如果更改查询以便仅当list中的所有值与字段匹配时才返回文档?

3 个答案:

答案 0 :(得分:0)

你应该使用$ all运算符

query.addCriteria(Criteria.where("sample").all(sampleList));

答案 1 :(得分:0)

为了完全匹配,您应该只查询数组中的元素。例如:

{"sample":['a','b','c']}

参考here

答案 2 :(得分:0)

您应该使用all类的Criteria方法。正如document所说:

  

$all运算符选择字段值为包含所有指定元素的数组的文档。

因此,您应该按如下方式修改您的陈述。

query.addCriteria(Criteria.where("sample").all(sampleList));