繁体   English   中英

返回列表匹配字段中的一个或多个元素的所有元素的查询 Java MongoDB Driver 3.7.1

[英]Query that returns all elements where one or more elements in List match field Java MongoDB Driver 3.7.1

我正在努力思考如何设计特定的查询。

我得到了一个由用户在运行时选择的名称的电台列表,存储在一个列表中。 也就是说,列表大小和内容可能会发生变化,但类型始终相同。 我的数据库中的数据元素具有相似的站名。

我想设计一个查询来查找所有站点名称与列表中的站点名称匹配的文档。

假设我得到了一个站名List<String> StationNames = ["Bob", "Allan"]和具有以下站名的字段

{station_name: "Bob"} ,  {station_name: "Allan"} , {station_name: "Steve"} , {station_name: "Patricia"}

然后查询将返回前两个文档,因为 Bob 在列表中,Allan 在列表中。

我将如何设计这个查询? 我的问题是设计它以便它根据列表中的字符串动态工作,如果列表长度没有改变,我会添加一个 eq(stationName, StationNames[i]) 或者我会做几个查询并将结果添加到一个列表中但我认为在单个查询中执行它更有效。

以下是编写查询的方法:

// The input list
List<String> stationNames = [ "Bob", "Allan" ];  

// The query
Document filter = new Document( "station_name", new Document( "$in", stationNames ) );
List<Document> results = new ArrayList<>();
myCollection.find( filter ).into( results );

results列表将包含站名为“Bob”和“Allan”的文档。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM