java mongodb 子文档_java – 查询文档及其与mongodb中的条件匹配的所有子文档(使用spring)...

本文档讨论如何在Java Spring Data MongoDB中查询包含特定条件的子文档。内容涉及一个存储传感器数据的MongoDB集合,以及如何通过聚合查询匹配特定时间范围的子文档。文中提到在MongoDB shell中已经找到了解决方案,但询问如何在Spring Data中实现相同的功能,同时关注过滤的效率和数据建模的优化建议。
摘要由CSDN通过智能技术生成

我有一个MongoDB存储来自不同传感器的数据.它具有以下结构:

{

"_id" : 1,

"sensorName" : "Heart Rate",

"samplePeriod" : 1000,

"data" : [

{

"timestamp" : NumberLong("1483537204046"),

"dataPoints" : [ 68 70 ]

},

{

"timestamp" : NumberLong("1483537206046"),

"dataPoints" : [ 68 70 ]

}

]

}

{

"_id" : 2,

"sensorName" : "Ambient Light",

"samplePeriod" : 500,

"data" : [

{

"timestamp" : NumberLong("1483537204058"),

"dataPoints" : [ 56, 54, 54, 54 ]

},

{

"timestamp" : NumberLong("1483537206058"),

"dataPoints" : [ 56, 54, 54, 54 ]

}

]

}

现在例如我需要“心率” – 包含其所有字段及其“数据”字段的文档 – 与条件“1483537204000和1483537214000之间的时间戳”匹配的子文档.

我已经在另一个问题的mongo shell中得到了关于如何做到这一点的答案.看到这段代码:

aggregate([{

$match: {

"_id": 1

}

}, {

"$project": {

"_id": 1,

"sensorName": 1,

"samplePeriod": 1,

"data": {

"$filter": {

"input": "$data",

"as": "result",

"cond": {

$and: [{

$gte: ["$$result.timestamp", 1483537204000]

}, {

$lte: ["$$result.timestamp", 1483537214000]

}]

}

}

}

}

}])

但是我如何在java spring-data中执行此操作?在spring-data中似乎没有像$filter那样的东西.有解决方法吗?

无论如何,$filter的效率如何?

你能想到在mongodb中构建这种数据的更有效/实用的方法吗?

提前致谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值