MongoDB查询:$ all具有嵌套属性

时间:2018-07-10 16:34:51

标签: mongodb mongodb-query spring-mongodb

您好,我需要有关MongoDB的帮助:

“我的文档”具有以下属性(由带有Spring的Map生成):

"filter":{"billingAccount_id":["multisim5"],"simulate":["true"]}

我正在尝试使用此代码(由spring生成)查找文档

query.addCriteria(Criteria.where("filter").all(getMapWithValues()));

这将导致

"filter" : { "$all" : [{ "billingAccount_id" : ["multisim5"] }] }

但是我没有结果。在这里做什么

谢谢您的帮助

1 个答案:

答案 0 :(得分:0)

您将$ all应用于对象(过滤器)而不是数组(filter.billingAccount_id)。更改您的请求(和方法getMapWithValues)以获取类似内容:

{"filter.billingAccount_id" : { "$all" : ["multisim5"] }}

但是$ all用于查找至少包含查询中提供的所有值的数组。由于$ all参数中有一个唯一元素,因此$ all在这里无用,并且以下查询输出的结果相同:

{"filter.billingAccount_id" : "multisim5"}

编辑:如果要查询具有完全匹配项的数组(“ multisim5”,别无其他),请使用以下命令:

{"filter.billingAccount_id" : { "$eq" : ["multisim5"] }}