在MongoDB Java驱动程序中,如何使用$filter



我有一个在MQL中工作的查询。我需要把它翻译成Java。MQL中的查询看起来像这个

db.<collection>.aggregate( [
{
$project: {
"MonitoringLocationIdentifier": 1,
epochTimes: {
$filter: {
input: "$epochTimes",
as: "epochTime",
cond: { $and: [ {$gte: [ "$$epochTime", NumberLong("0") ]}, {$lte: ["$$epochTime", NumberLong("558268020000")]} ]}
}
},
}
}
] )

该集合包含类似于此的文档

{"_id" : ObjectId("633218dfec534a6fe90106b8"), 
"MonitoringLocationIdentifier": "Site1", 
"epochTimes" : [ NumberLong("451058760000"), NumberLong("558189720000"), NumberLong("516460860000") ] }

我试图获取集合中的所有文档;每个文档的最小值/最大值。

有Java驱动程序向导吗?

我搜索了mongodb java aggregation,谷歌得到了这个"Java-聚合管道";他们的文章。它介绍了一些示例,但也提到Compass工具具有将管道导出到特定语言的功能。

所以在打开指南针之后,我使用了CREATE NEW->Pipeline from text并从上面粘贴到您的MQL中。加载后,我单击EXPORT TO LANGUAGE,在下拉菜单中选择JAVA,添加Include Import Statements,它会生成以下内容:

import java.util.Arrays;
import org.bson.Document;
Arrays.asList(new Document("$project", 
new Document("MonitoringLocationIdentifier", 1L)
.append("epochTimes", 
new Document("$filter", 
new Document("input", "$epochTimes")
.append("as", "epochTime")
.append("cond", 
new Document("$and", Arrays.asList(new Document("$gte", Arrays.asList("$$epochTime", 0L)), 
new Document("$lte", Arrays.asList("$$epochTime", 558268020000L)))))))))

(还有一个Include Driver Syntax按钮,如果需要的话,它似乎会更加详细(。

所以我不是Java驱动程序向导,但希望这能有所帮助!

相关内容

  • 没有找到相关文章

最新更新